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

您需要返回 avector<InputtedInstructions>而不必担心堆分配。

于 2013-10-02T15:42:33.877 回答
0

该函数被声明为返回一个InputtedInstructions

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

但是它的实现想要返回一个指向 a 的指针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 回答