无法从int转换为struct

时间:2013-07-26 21:15:00

标签: c++ casting struct

所以我有以下结构定义

struct  sCount { U32 _; };
typedef sCount tCount;

但是当我尝试执行以下代码时:

tCount Count = (U32)atoi(arg[10].c_str());

我收到错误:没有合适的构造函数可以从U32转换为tCount。关于我如何解决这个问题的任何建议?

3 个答案:

答案 0 :(得分:3)

我特别不喜欢你的工作方式,但聚合初始化会做你想做的事情:

tCount Count = { (U32)atoi(arg[10].c_str()) };

或者,您可以提供采用适当类型的构造函数。

答案 1 :(得分:3)

在此代码中,tCountU32是不同且不相关的类型。它们之间没有隐式或显式的转换。相反,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类型。