问题描述
我遇到了一个问题,尤其是我当前正在处理的问题中。我在自己的文件中有两个类/结构。 A类具有内部类,而B类具有该类型的成员。我需要在A内使用B的实例,如果将它们实例化在同一文件中是可以的,但是由于它们不是我该如何进行这项工作?
A.h
#pragma once
#include "B.h"
class A
{
public:
class Inner{};
B getNewB() { return B{}; }
};
B.h
#pragma once
#include "A.h"
struct B
{
A::Inner inner;
};
解决方法
A.h:
#pragma once
#include "innerA.h"
struct B;
class A
{
public:
B getNewB();
friend class InnerA;
};
A.cpp
#include "A.h"
#include "B.h"
B A::getNewB() { return B{}; }
B.h
#pragma once
#include "innerA.h"
struct B
{
InnerA inner;
};
B.cpp
#include "B.h"
InnerA.h
#pragma once
class InnerA
{
};
InnerA.cpp
#include "innerA.h"
我将A::Inner
移到了另一个类并添加了朋友关系(您可以添加双向,使用与上面的I相同的技巧和struct声明)