gpt4 book ai didi

c++ - 如何使指针指向非成员函数?

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

如果我有例如包含功能的类 A:

//this is in A.h
friend const A operator+ (const A& a,const A& b);
friend const A operator* (const A& a,const A& b);

这是一个全局性的(据我所知)。此功能在 A.cpp 中实现。

现在,我有了 B 类,它也包含函数和成员:

//this is in B.h
friend const B operator+ (const B& a,const B& b);
friend const B operator* (const B& a,const B& b);
A _a;

我不想使用两个单独的方法,而是想在 B.h 中创建一个方法:

static const B Calc(const B&, const B&, funcP);

在 B.cpp 和 funcP 中实现的是指向上述函数的指针的类型定义:

typedef const A (*funcP) ( const A& a, const A& b);

但是当我试图在函数内部调用 Calc(..) 时,我得到了这个错误:“未解析的重载函数类型”。我这样调用它:

friend const B operator+ (const B& a,const B& b){
...
return B::Calc(a,b, &operator+);
}

我做错了什么?

最佳答案

重载函数通常根据其参数的类型进行解析。当您创建指向函数的指针时,这是不可能的,因此您必须在明确的上下文中使用寻址运算符。

Actor 是实现这一目标的一种方式。

static_cast<funcP>(&operator+)

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

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