提问者:小点点

调用基类构造函数?


为什么下面没有编译:

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();
};

共1个答案

匿名用户

这是因为您甚至在声明之前就将tmp变量传递给超类构造函数。它在下一行声明,因为编译器找不到变量声明。