我需要一个POD配置结构数组,其中包含一些长命名类中静态函数的指针,例如。
typedef void (*MyFn)();
struct MyData {
MyFn myFn;
...
};
...
struct MyData const configArr[] = {
{ ... },
...
};
要使用的函数类似于void AClass::AnotherClass::YetAnotherClass::someFn();
我看到三个选项:
configArr
成为AClass::AnotheClass::YetAnotherClass
的成员,'粘贴" ::"和" xxx"没有提供有效的预处理令牌'。
我想出的最好的事情是为conf中使用的所有函数设置一些公共前缀。
即:AClass::...::prefSomeFn()
;并使用' AClass :: ... :: pref'的串联和' SomeFn'它有效,但它看起来仍然太难看了。
有没有更好的出路?
答案 0 :(得分:1)
'粘贴'::“和”xxx“不提供有效的预处理令牌。
那是因为他们是单独的令牌;你不需要粘贴它们,只需将它们放在扩展中:
struct ClassWithALongName { int i; };
#define X(MemberId) &ClassWithALongName::MemberId
auto ptr = X(i);