相关疑难解决方法(0)

使用类类型向量的前向声明 - 不允许指向不完整类类型的指针

我有两节课,foobar.

foo.h #includes bar.h并包含一个std::vector指向bar对象的指针.在运行时期间的某个时刻,bar必须访问指向其他bar对象的指针向量.因此,foo包含一个getBarObjects()返回指针数组的方法.

因此,我foo在bar.h中转发声明.我显然还要转发声明我正在使用的方法 - foo::getBarObjects().当这返回指针数组时bar,我陷入了恶性循环.

我无法转发声明Bar然后只是转发声明getBarObjects(),因为这导致"不允许不完整的类型名称".

foo.h中:

#include "bar.h"
#include <vector>

class foo {
    public:
         foo();
         ~foo();
         std::vector<bar*> getBarObjects();
    private:
         std::vector<bar*> barObjects;
}
Run Code Online (Sandbox Code Playgroud)

bar.h:

class foo;
std::vector<bar*> foo::getBarObjects();        // error, doesn't know bar at this point

class bar {
    public:
        bar(foo *currentFoo);
        ~bar();
        bool dosth();
    private:
        foo *thisFoo;
}
Run Code Online (Sandbox Code Playgroud)

bar.cpp:

#include "bar.h"

bool bar(foo …
Run Code Online (Sandbox Code Playgroud)

c++ circular-dependency forward-declaration

11
推荐指数
2
解决办法
6764
查看次数