0

ヘッダーファイルのパブリック部分に次の構造体とメソッドがあります。

struct InputtedInstructions
{
    string name;
    string arg1;
    string arg2;
    string arg3;
};
InputtedInstructions get_instruction(vector<string>& text, int count);

次に、私のcppファイルで:

      Instructions::InputtedInstructions Instructions::get_instruction(vector<string>& vec, int counter)
{   
    int ListPosition = 0;
    InputtedInstructions* InputList = new InputtedInstructions[counter];
    while (ListPosition != counter)
    {

        string text = vec.at(ListPosition);
        istringstream iss(text);
        string command, arg1, arg2, arg3;

        int CommaAmount = count(text.begin(), text.end(), ',');

        if (CommaAmount == 2)
        {
            while( iss >> command >> arg1 >> arg2 >> arg3)
            { 
                InputList[ListPosition].name = command;
                InputList[ListPosition].arg1 = arg1;
                InputList[ListPosition].arg2 = arg2;
                InputList[ListPosition].arg3 = arg3;
                ListPosition++;
            }
        }
//same thingfor 3 commas, 4, etc. 
        return InputList;

私の問題は、そのリターンステートメントにあります。[] を末尾に追加してほしい。しかし、InputList配列全体を返したいです。私が間違っていることが明白に明らかなことはありますか?ご協力いただきありがとうございます。

4

3 に答える 3

0

a を返す必要があり、vector<InputtedInstructions>ヒープ割り当てについて心配する必要はありません。

于 2013-10-02T15:42:33.877 に答える
0

関数は次のいずれかを返すように宣言されていInputtedInstructionsます。

InputtedInstructions get_instruction(vector<string>& text, int count);`

しかし、その実装はへのポインタを返すことを望んでいますInputtedInstructions:

InputtedInstructions* InputList = new InputtedInstructions[counter];
于 2013-10-02T15:42:50.270 に答える
-1

宣言を次のように変更します

InputtedInstructions* get_instruction(vector<string>& text, int count);

そして、定義を次のようにします

Instructions::InputtedInstructions* Instructions::get_instruction(vector<string>& vec, int counter)
{

// blah blah

}   
于 2013-10-02T15:40:00.567 に答える