所以我有两个这样的课程
#pragma once
#include "B.h"
class A {
public:
B getB() {}
};
和
#pragma once
#include "A.h"
class B : public A {
};
错误:'A'基类未定义。
两者都需要在另一个之前声明,所以我该如何解决这个问题?
如果您将代码重新排序到一个文件中,那么它看起来像这样:
#include <iostream>
using namespace std;
class B : public A {
};
class A {
public:
B getB() {}
};
void main() {
A a;
B b = a.getB();
system("pause");
}
但问题仍然存在......
答案 0 :(得分:1)
所以在这里你被困住了。通常的解决方法是通过引用/ pointer / shared_ptr返回类:
// Forward declaration
class B;
class A
{
public:
B& GetB();
};
class B : public A
{ /* ... */ }
B& A::GetB() { return a_b_from_somewhere; }
但请注意,在这种情况下你肯定要处理船东的问题(即谁拥有你返回的指针?)