gpt4 book ai didi

c++ - 如何从模板类型中获取指向模板化成员函数的指针?

转载 作者:太空狗 更新时间:2023-10-29 21:29:48 24 4
gpt4 key购买 nike

以下代码无法编译……知道为什么吗?这是非法的 C++ 吗?

class Handler {
public:
template <typename T>
void handle(T t) {}
};

class Initializer {
public:
template <typename T, typename H>
void setup(H *handler) {
void (H::*handle)(T) = &H::handle<T>; // fails
}
};

int main() {
Initializer initializer;
Handler handler;
initializer.setup<int, Handler>(&handler);
}

最佳答案

您需要模板:

void (H::*handle)(T) = &H::template handle<T>; 

因为模板 handle 是用依赖类型限定的。 (就像你使用 typename 如果一个类型被依赖类型限定。)

关于c++ - 如何从模板类型中获取指向模板化成员函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084239/

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