所以我有以下结构定义
struct sCount { U32 _; };
typedef sCount tCount;
但是当我尝试执行以下代码时:
tCount Count = (U32)atoi(arg[10].c_str());
我收到一个错误:不存在合适的构造函数来从 U32 转换为 tCount。关于如何解决这个问题的任何建议?
我特别不喜欢你做事的方式,但聚合初始化会做你想做的事:
tCount Count = { (U32)atoi(arg[10].c_str()) };
或者,您可以提供一个采用适当类型的构造函数。
在这段代码中tCount
和U32
是不同且不相关的类型。它们之间没有隐式或显式的转换。相反,该tCount
类型包含一个U32
. 您需要将U32
值分配给该字段`
tCount Count;
Count._ = (U32)atoi(arg[10].c_str());
或者更好的是,定义一个将值作为参数的构造函数。这也将启用隐式版本案例
struct sCount {
sConut(U32 value) : _(value) { }
U32 _;
}
注意:鉴于该成员sCount::_
是公开的,如果它有一个比_
正如错误所说,您需要创建一个构造函数。只需有一个带有单个 int 参数的构造函数,您就可以从 int 'cast' 到 class/struct 类型。