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

C++ 如何在方法中返回动态分配的数组结构?,c++,struct,dynamic-arrays,C++,Struct,Dynamic Arrays,我的headerfile的公共部分中有以下结构和方法: struct InputtedInstructions { string name; string arg1; string arg2; string arg3; }; InputtedInstructions get_instruction(vector<string>& text, int count); struct inputedInstructions { 字符串名; 字符串a

我的headerfile的公共部分中有以下结构和方法:

struct InputtedInstructions
{
    string name;
    string arg1;
    string arg2;
    string arg3;
};
InputtedInstructions get_instruction(vector<string>& text, int count);
struct inputedInstructions
{
字符串名;
字符串arg1;
字符串arg2;
字符串arg3;
};
输入指令get_指令(向量和文本,整数计数);
然后在我的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;
指令::InputedInstructions指令::get_指令(向量和向量,整数计数器)
{   
int ListPosition=0;
InputedInstructions*InputList=新的InputedInstructions[计数器];
while(ListPosition!=计数器)
{
字符串文本=vec.at(ListPosition);
istringstream iss(文本);
字符串命令,arg1,arg2,arg3;
int CommaAmount=count(text.begin(),text.end(),',');
如果(CommaAmount==2)
{
而(iss>>命令>>arg1>>arg2>>arg3)
{ 
InputList[ListPosition].name=命令;
InputList[ListPosition].arg1=arg1;
InputList[ListPosition].arg2=arg2;
InputList[ListPosition].arg3=arg3;
ListPosition++;
}
}
//3个逗号、4等的内容相同。
返回输入列表;

我的问题在下面的return语句上。它希望我将[]添加到它的末尾。但我希望返回整个InputList数组。是否有明显的错误?感谢您的帮助。

将您的声明更改为

InputtedInstructions* get_instruction(vector<string>& text, int count);
inputedinstructions*get_指令(向量和文本,整数计数);
并将其定义为

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

// blah blah

}   
指令::InputedInstructions*指令::get_指令(向量和向量,整数计数器)
{
//废话
}   

您需要返回一个
向量,而不必担心堆分配。

函数声明为返回一个
输入的指令:

InputtedInstructions get_instruction(vector<string>& text, int count);`
InputtedInstructions* InputList = new InputtedInstructions[counter];

编译器错误是什么?太棒了。工作得很好。真不敢相信我没有看到。@cmonnats23别忘了升级投票,并选择适合你的答案:)@KevinCadieux我会升级投票,但我没有足够的“声誉”还没有投票。但我确实把你的标记为正确的,因为你是第一个,而且成功了!@cmonnats23实际上这是约翰·史密斯的答案。但是谢谢你选择了它!我不记得你需要声誉来投票。对此我深表歉意。