class 类型的 C++ 变量声明没有命名类型?

C++ Variable declaration of type class does not name a type?

我在声明类型为 class 的变量时遇到问题。

示例代码

class Party{
     public:

     string partyName;
     Leader leader;
     Candidate candiate;
     nationalcompaignManager nationalManager;
     natioanlfinancialManager financialManager;
     compaignMananger newcompaignMananger; 
};

class Leader: public Person {

    public:
     int popularity;
     int totalcountryVotes;
}

如代码片段所示,有几个变量声明为 class 类型,在此示例中,我演示了变量领导者如何存在 class 领导者;

错误代码示例(都一样)

 error: ‘Leader’ does not name a type
      Leader leader;

每个变量都有 classes,但为了简单起见,我将与 Leader 一起工作。 Leader在程序范围内明明定义为class,而其类型的变量却不是?我不确定为什么会出现此错误

只需在 Party 上方声明 Leader 即可使其 "visible" 变为 Party class。

class Leader
{
};

class Party
{
  Leader leader;
};

C++ 是一种顺序语言,这意味着它会从上到下开始编译您的代码。所以在你声明一个 class 变量之前,你应该首先在声明之前定义 class 否则 class 不存在(直到它被定义)因此,导致错误.

class Leader
{
};   //The class Leader is now defined.
class Party
{
Leader leader;
};

简而言之,您不能使用尚未创建的东西。