gpt4 book ai didi

c++ - 关于前向声明 C++ 类

转载 作者:行者123 更新时间:2023-11-28 03:07:23 25 4
gpt4 key购买 nike

我有两个这样的类:

class B;

class A {
public:
int a, b;
B *b;
public:
int getctxt()
{
b->getctxt1();
}
}

Class B {
public:
int c,d;
A *a;
getctxt1()
{
/* something */
}
}

main()
{
B *b = new B();
A *a = new A();
b->a = a;
a->b = b;
}

但是当我尝试编译时,它说

invalid use of incomplete type ‘struct A’.

谁能告诉我如何解决这个问题?

最佳答案

内联类成员函数定义被解析为就好像它们出现在类定义之后一样。当然 B 在那个时候还没有定义。因此,将 A::getctxt 的成员函数定义移出类 A 的定义:

class B;

class A { int getctxt(); /* ... */ };

class B { /* ... */ };

int A::getctxt()
{
b->getctxt1(); // at this point, *b has complete type!
return -35;
}

关于c++ - 关于前向声明 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19350197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com