使用彼此对象的类(位于不同的标题中)

时间:2013-03-02 17:24:54

标签: class header

名为 Universes 的类使用 States 类型的数据成员,而 States 使用 Universes 类型的对象>。我正在使用Visual C ++ 2010 Express(如果这有任何区别)。

States.h:

class Universes;

extern Universes universe;

class States
{
public:

    int relations;

    States();
};

States::States()
{
    relations = universe.state_no;
}

Universes.h

#include "States.h"

class Universes
{
public:
    States state;
    int state_no;
};

Test.cpp的

#include "stdafx.h"
#include <iostream>
#include <conio.h>

#include "Universes.h"

using namespace System;

int main(array<System::String ^> ^args)
{
    Universes universe;
    _getch();
    return 0;
}

我一直收到以下错误:

States.h(16): error C2027: use of undefined type 'Universes'
States.h(1) : see declaration of 'Universes'
States.h(16): error C2228: left of '.state_no' must have class/struct/union

1 个答案:

答案 0 :(得分:0)

在您尝试访问universe.state_no时,Universes类不完整(已向前声明)。

解决此问题的一种简洁方法是将States::States的定义移至States.cpp,并确保States.cpp #includes Universes.h