gpt4 book ai didi

c++ - 将枚举传递给引用 int 的函数

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

取消引用类型双关语

我有一个枚举

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*)’

什么是正确的方法?

最佳答案

当您在使用内联转换时遇到问题时,将其拆分为单独的一行会很有帮助:

const AgentStatus enumValue = kRUNNING;
...
int intValue = static_cast<int>(enumValue);
DimService("works now", intValue);

关于c++ - 将枚举传递给引用 int 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14897311/

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