如何在方法中返回动态分配的数组结构?

时间:2013-10-02 15:36:09

标签: c++ struct dynamic-arrays

我在头文件的公共部分有以下结构和方法:

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数组。有什么明显的东西我做错了吗?谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

声明该函数返回一个InputtedInstructions

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

但它的实现想要返回指向InputtedInstructions的指针:

InputtedInstructions* InputList = new InputtedInstructions[counter];

答案 2 :(得分:-1)

将您的声明更改为

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

并将定义设为

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

// blah blah

}