定义前的结构声明

时间:2013-07-07 09:53:26

标签: c++ class struct forward-declaration

我的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;

你能提出什么建议?有没有办法首先声明结构,而不是单独定义它?

2 个答案:

答案 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

};