不能使用 类 尚未在 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;
}
所以我正在用 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;
}