将类指针传入类的构造函数

Passing class pointer in to constructor for class

本文关键字:构造函数 指针      更新时间:2023-10-16

在一个合作项目中工作(希望两个项目比一个更容易-我错在哪里?)

基本上,我们试图做的有点像这样:

class first
{
    first(int * num);
};
class second
{
    second(first * frst);
    first * frt;
};
first::first(int * num)
{
}
second::second(first * frst)
{
    frt = frst;
}

不过,有一点问题,我们不能包含我们的Core.h文件,因为它包含了我们已经包含的文件的include(这是有意义的)。简短的版本是,我们必须做一些更像这样的事情:

#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类中访问它,这会导致问题吗?

感谢

您正在转发声明。没事。

当您可以在没有任何编译错误的情况下使用Core->GetSomething()时,这意味着类Core已经定义,并且它不是一个不完整的类型。因此,使用它没有问题。只需确保在构造Player时传递了一个指向Core的有效指针。

注意:在代码中,您传递的是指向类类型的指针,而不是引用。