C++ 错误,类指针作为另一个类中的数据成员

标签 c++ class pointers

当我尝试编译我的代码时,我不断收到奇怪的 C4430 和 C2143 错误。我的类(class)有指向不同类(class)的数据成员,错误是说它期待一个“;”在类名和“*”之间。这是我的类(class)摘要:

#include "CarStack.h"
#include "CarQueue.h"    
#include "CarDeque.h"
#include "base_class.h"

class my_class : public base_class
{
public:
    //Member Functions
private:
    //Other data members
    CarStack* car_stack;
    CarQueue* car_queue;
    CarDeque* car_deque;
};

错误来自那些类指针。为什么我会得到这样的错误?我缺少什么重要的东西吗?

最佳答案

如果基类或任何汽车类调用此列表中的其中一个,您将获得循环依赖性。对此有很多解决方案。

我发现最好的解决方案:从我最近的 opengl 项目“Include.h”中复制粘贴包含:

#ifndef _INCLUDE_H
#define _INCLUDE_H

#include <Windows.h>
#include "SDL.h"
#include "gl/gl.h"
#incldue "gl/glu.h"

#include "Most Derived Classes"
#include "Most Derived Classes"

#endif

然后,只需在项目的主驱动程序文件的开头使用#include "Include.h"。然后,只包含派生类的基本 header 。

我认为这是一堆前向声明的更好解决方案,IMO。

关于C++ 错误,类指针作为另一个类中的数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926470/

相关文章:

c++ - 检查 C++11 中的类型 #defines

JavaScript 对象甚至在新对象中也存储以前的值

python - 当我实例化一个 python 子类时,它会覆盖基类的属性

c - strcpy:在 union 中使用 char** 变量作为参数

c - 如何在实现 strcat 时消除段错误(核心转储)错误?

c++ - 调用 fork 后 gRPC 服务器中的 SSL 握手失败

c++ - 如何正确声明从非常量迭代器到指针的常量指针

c++ - 在 Eclipse 中哪里可以找到解析的 Boost.Test 输出

swift - 如何将 Swift "switch case is ..." block 转换为面向循环的代码?

c++ - 如何声明指向二维数组的指针数组