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