【发布时间】:2020-06-04 15:59:11
【问题描述】:
我正在编写一个类来包装一个需要回调函数指针的库。见下文:
struct LibraryConfig {
// Omitting other members...
void (*callback)(const char *);
};
class MyClass {
private:
LibraryConfig m_config;
public:
MyClass(const LibraryConfig &config) {
// Initialize m_config using config, would like to set callback so that it calls
// this->myCallback().
}
void myCallback(const char *);
};
只会声明 MyClass 的静态实例,因此可以在编译时保持构造。我已经尝试了接受 MyClass 指针的 lambdas 和模板函数,但我要么无法在构造函数中完成此操作,要么无法在编译时完成此操作(通过 this 或 &myClass 获取实例的地址在编译时似乎不可能)。
constexpr 参数将来可能会被允许,这使得实现起来很简单,但是现在有没有办法用 C++20 来实现呢?
【问题讨论】:
-
fwiw,constexpr 参数不太可能被添加到语言中。