取消引用类型双关语
我有一个枚举
enum AgentStatus { kSTOPPED = 0, kRUNNING, kIDLE, kNAGENTSTATUS };
我需要将它传递给具有许多重载变体的外部库的函数。我想将它传递给第二个参数:
DimService::DimService(const char*, int&);
DimService::DimService(const char*, char*);
...
如果我对枚举变量的 (int&) 进行强制转换,我会收到臭名昭著的警告:
warning: dereferencing type-punned pointer will break strict-aliasing rules
如果我对 (int) 进行强制转换,我会得到这个
invalid conversion from ‘int’ to ‘char*’
error: initializing argument 2 of ‘DimService::DimService(const char*, char*)’
正确的方法是什么?