C++ 如何在方法中返回动态分配的数组结构?
我的headerfile的公共部分中有以下结构和方法: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
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实际上这是约翰·史密斯的答案。但是谢谢你选择了它!我不记得你需要声誉来投票。对此我深表歉意。