参与一个合作项目(希望两个比一个更容易 - 我有多么错......?)
基本上,我们要做的就是这样:
class first
{
first(int * num);
};
class second
{
second(first * frst);
first * frt;
};
first::first(int * num)
{
}
second::second(first * frst)
{
frt = frst;
}
但是有一个问题,我们不能包含我们的Core.h文件,因为它包含我们已经包含的文件(在某处有感觉)。简短的版本是,我们不得不做更多这样的事情:
#ifndef PLAYERSTRUCTURE
#define PLAYERSTRUCTURE
// DO NOT INCLUDE CORE IN THIS FILE
class Core;
struct PlayerMem
{
int cid;
int y, x, z;
};
class Player
{
public:
Player::Player(Core * coar);
Player::Player(void);
Player::~Player(void);
};
#endif
Core类已声明但未定义,如果我们尝试使用Core-> GetSomething()等从Player类中访问它会导致问题吗?
由于
答案 0 :(得分:1)
你是转发声明。没关系。
如果您可以在没有任何编译错误的情况下使用Core->GetSomething()
,则表示已定义类Core
,并且它不是不完整的类型。因此,使用它没有问题。只需确保在构建Core
时将有效指针传递给Player
。
注意:在您的代码中,您传递的是指向类类型而非引用的指针。