c++ - 多类依赖

标签 c++ oop class-design

我正在尝试创建一个包含另外两个对象的类,这些对象应该维护一个指向它们所在类的指针。对于

例如...(我只是在对象实例变量上使用,最终想象有一个非常类似于ClassB的类)

这只是我的 main.cpp,我想我会把它包括在内......

//Filename: main.cpp
#include "ClassA.hpp"

int main(int argc, char **args) {
    ClassA *a = new ClassA();
    // There would be some more here in the real code
    return 0;
}

现在是有问题的类(class)....

//Filename: classA.hpp
#ifndef CLASSA_H
#define CLASSA_H

#include "ClassB.hpp"

class ClassA {
public:
    ClassA() {
        b = new B(this);
    };
    virtual ~ClassA();

private:
    ClassB *b;
};

#endif //CLASSA_H

现在这是另一个文件...

#ifndef CLASSB_H
#define CLASSB_H

#include "ClassB.hpp"

//Filename: classB.hpp
class ClassB {
public:
    ClassB(ClassA *parent) {
        this->parent = parent;
    };
    virtual ~ClassB();
private:
    A *parent;
};

#endif //CLASSB_H

当我尝试编译它时,我收到错误“错误:ClassA 没有命名类型”,然后当然是“错误:预期‘)’在‘*’标记之前” 我的猜测是这与他们(包括彼此)有关吗?

(不确定这是否重要,但在实际代码中,函数实现在包含 header 的 .cpp 文件中。这样可以吗?)

最佳答案

我假设这些是拼写错误,但当您有 A * 时,我可能会误认为 classA

您需要做的是前向声明类。

class ClassA;
class ClassB{
    ...
};

ClassA 也是如此

class ClassB;
class ClassA{
      ....
};

关于c++ - 多类依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406258/

相关文章:

c++ - 在指针中编码其他信息

java - 安卓类库

php - 无法让 PHP 类函数使用类中的另一个函数

oop - MATLAB : Instantiate a class from an empty Instance to a 'Blank' Instance

ios - 来自 Performance Wise : Class Computed Property vs Stored Property

objective-c - 递归类设计模式 : Options and Best Practices

c++ - 无法找到过程入口点

c++ - 内存重新对齐后重新对齐指针

java - Java中实现接口(interface)的类可以声明为接口(interface)吗?

c# - 在方法中传递数据对象或数据对象的一部分?