gpt4 book ai didi

c++ - 是否可以从基类调用派生类函数

转载 作者:行者123 更新时间:2023-11-30 04:28:34 25 4
gpt4 key购买 nike

我需要澄清调用方法,我有一个基类,我尝试使用派生类对象从中调用派生类函数。可以吗

请告诉我这个senario中我的代码有什么问题

#include "stdafx.h"
#include <malloc.h>

class derived;

class base
{
public:
base()
{

}
~base()
{
}

void setdptr(derived* dptr)
{
m_dptr = dptr;
dptr->sayHello();
}

virtual void addfunc()
{

printf("base class add");
}

derived *m_dptr;

};

class derived : public base
{
public:
derived()
{
}
~derived ()
{
}

void addfunc()
{
printf("derived class add");
}

void sayHello()
{
printf("Say Hello");
}

void setDeriveToBase()
{
setdptr(this);
}

};

int _tmain(int argc, _TCHAR* argv[])
{
derived dp;
dp.setDeriveToBase();
return 0;
}

最佳答案

base 类的 setdptr 函数中,您还没有定义完整的 derived 类,所以编译器还没有知道 derived 中有哪些成员。

setdptr 的实际定义 移到derived 的声明之后,它应该可以工作。

像这样:

class derived;

class base
{
// ....

void setdptr(derived* dptr);

// ....
};

class derived : public base
{
// ....
};

void base::setdptr(derived* dptr)
{
m_dptr = dptr;
dptr->sayHello();
}

关于c++ - 是否可以从基类调用派生类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10026220/

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