为什么下面没有编译:
BuiltInCommand::BuiltInCommand(const string &cmd_line) : Command(tmp) {
string tmp=cmd_line;
_removeBackgroundSign(tmp);
}
如有需要,请提供更多详细信息:
我想将tmp传递给父构造函数
class Command {
protected:
string cmd = nullptr;
vector<string> args;
int num_of_args=0;
public:
Command(const string &cmd_line);
virtual ~Command();
virtual void execute() = 0;
};
class BuiltInCommand : public Command {
public:
BuiltInCommand(const string &cmd_line);
virtual ~BuiltInCommand();
};
这是因为您甚至在声明之前就将tmp变量传递给超类构造函数。它在下一行声明,因为编译器找不到变量声明。