gpt4 book ai didi

c++ - 函数成员指针

转载 作者:行者123 更新时间:2023-11-27 23:25:47 26 4
gpt4 key购买 nike

我有类似的东西

基础.h

#ifndef BASE_H
#define BASE_H

class Base
{
virtual Base* createNew() = 0;
}

#endif

D.h

#ifndef D_H
#define D_H

#include "Base.h"

class D : public Base
{
virtual Base* createNew();
}

#endif

D.cpp

#include "D.h"
Base* D:createNew()
{
return new D();
}

主要.cpp

typedef Base* (Base::*FP)(void);

#include "D.h"

void create(FP pointer)
{
//empty for now
}

int main()
{
create(&D::createNew); //This doesnt work =s?

}

我非常困惑为什么这不起作用任何人都可以给我一些关于我应该做什么的建议吗????

附言。抱歉,如果代码没有运行,我把它放在那里只是为了向您展示我在做什么

最佳答案

您的代码中存在大量语法问题;

  • Base::createNew() 是私有(private)和虚拟的。
  • 两个类声明都没有终止 ;
  • D:createNew() 应该是 D::createNew()。...

我认为您指的是采用成员函数指针并将其传递给方法是行不通的。

问题是您采用了一个只能用 D 调用的方法,并试图将它作为指向可以采用 Base 的函数的指针传递> 那不一定是 D。反之亦然,(即将 Base::createNew() 传递给采用 D::createNew() 的函数,因为 Base::createNew() 总是存在于 D 中,而不是相反)

关于c++ - 函数成员指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631264/

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