不能使用 类 尚未在 C++ 中定义

Can't use classes not defined yet in c++

所以我正在用 C++ 编写一个程序,我得到了一个 returns 相同错误的程序版本:

#include <iostream>

class A
{
public:
    B foo()
    {
        return B();
    }
};

class B
{
public:
    A bar()
    {
        return A();
    }
};

int main(int argc, char const *argv[])
{
    A x = A();
    B y = x.foo();
    return 0;
}

但是每当我编译它时,它都会给我两个错误:

main.cpp:6:5: error: unknown type name 'B'
    B foo()
    ^
main.cpp:8:16: error: use of undeclared identifier 'B'
        return B();

但是我不能将 B 移到 A 上方,因为我会得到一个不同的错误:

main.cpp:6:5: error: unknown type name 'A'
    A bar()
    ^
main.cpp:8:16: error: use of undeclared identifier 'A'
        return A();

我完全不知道如何解决这个问题,所以任何帮助将不胜感激!

您需要拆分声明和定义。此外,您需要在 A 使用它之前将 B 声明为 class。

#include <iostream>

class B;

class A {
public:
    B foo();
};

class B {
public:
    A bar();
};

B A::foo() {
    return B();
}
A B::bar() {
    return A();
}

int main(int argc, char const *argv[]) {
    A x = A();
    B y = x.foo();
    return 0;
}