我在头文件的公共部分有以下结构和方法:
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数组。有什么明显的东西我做错了吗?谢谢你的帮助。
答案 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
}