我的C ++代码存在一个小问题。
class Command {
public:
virtual void start(CommandDesc userinput, Converter* convertobj) = 0;
virtual void help(int option) = 0;
};
struct CommandDesc
{
std::string name;
std::string description;
Command* comobj; //Issue is here
};
如果我在课前定义结构,我将无法定义成员
Command* comobj;
如果我在课后定义,我将无法通过
将struct的实例传递给方法virtual void start(CommandDesc userinput, Converter* convertobj) = 0;
你能提出什么建议?有没有办法首先声明结构,而不是单独定义它?
答案 0 :(得分:7)
好的,如果我在课前定义结构,我将无法做到 定义成员
Command* comobj;
由于comobj是指针,因此您可以转发声明Command
来解决此问题。
你这样做:
class Command;
struct CommandDesc
{
std::string name;
std::string description;
Command* comobj;
};
class Command {
public:
virtual void start(CommandDesc userinput, Converter* convertobj) = 0;
virtual void help(int option) = 0;
};
答案 1 :(得分:0)
是 - 简单 - 前瞻性声明
刚刚放
class Command;
struct CommandDesc
{
....
}
class Command {
As before
};