gpt4 book ai didi

C++ 发送派生指针作为参数

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:28 25 4
gpt4 key购买 nike

我试图通过基类的另一个函数将派生指针发送到基类的函数,但出于某种原因,它会提示:错误:在第 8 行无效使用不完整类型“struct Derived”。

#include <iostream>
using namespace std;
class Derived;

class Base
{
public:
void getsomething(Derived *derived){derived->saysomething();} //This is line 8
void recieveit(Derived *derived){getsomething(&*derived);}
};

class Derived : public Base
{
public:
void giveself(){recieveit(this);};
void saysomething(){cout << "something" << endl;}
};


int main()
{
Base *b = new Base;
Derived *d = new Derived;
d->giveself();
return 0;
}

你知道我该如何解决这个问题吗?

最佳答案

当编译器需要有关类成员的信息时,您不能使用前向声明。

前向声明仅用于告诉编译器具有该名称的类确实存在并且稍后将被声明和定义。

所以请喜欢以下内容:

class Derived ;

class Base
{
public:
void getsomething(Derived *derived);
void recieveit(Derived *derived);
};

class Derived : public Base
{
public:
void giveself(){recieveit(this);};
void saysomething(){cout << "something" << endl;}
};

void Base::getsomething(Derived *derived){derived->saysomething();}
void Base::recieveit(Derived *derived){getsomething(&*derived);}

关于C++ 发送派生指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921097/

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