0

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; 

クラスの後に定義すると、構造体のインスタンスをメソッドに渡すことができなくなります

virtual void start(CommandDesc userinput, Converter* convertobj) = 0;

何を提案できますか?構造を個別に定義するよりも、最初に構造を宣言する方法はありますか?

4

2 に答える 2

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;
};
于 2013-07-07T09:56:17.570 に答える
0

はい - シンプル - 前方宣言

置くだけ

class Command;

struct CommandDesc
{

 ....

}

class Command {
 As before

};
于 2013-07-07T09:58:08.703 に答える