C++ : constructor setting wrong values

标签 c++ constructor

我有一个奇怪的问题,其中值被很好地放入构造函数,但是这个没有返回正确的对象,它只是返回一个设置错误的值的对象(我想是默认值)

看看这个屏幕:

enter image description here

当我调试并进入构造函数时,我确信数据是正确的。例如,这里是 UserDetails 的构造函数:

UserDetails::UserDetails( QString _maxDataRate, Request _request ){

unsigned int intMaxDataRate = _maxDataRate.toUInt();
UserDetails(intMaxDataRate, _request);
}

UserDetails::UserDetails( unsigned int _maxDataRate, Request _request ) :
 maxDataRate( _maxDataRate ), request( _request ) {
 this->userID = IDGenerator++;
}

我知道这一定是一个典型的 C++ 错误,比如引用问题或类似的问题,但我不记得这可能是什么。

最佳答案

您正在从构造函数内部调用构造函数,即您正在创建一个立即销毁的临时对象。

您需要执行以下操作:

UserDetails::UserDetails( QString _maxDataRate, Request _request ) 
: UserDetails(_maxDataRate.toUInt(), _request);
{
}

关于C++ : constructor setting wrong values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502034/

相关文章:

c++ - 具有显式构造函数的类是否需要 piecewise_construct in emplace?

c++ - 如何识别股市中的矩形价格拥塞? (C++)

c++ - 将 malloc 与结构一起使用

c++ - 编写构造函数/析构函数是好的做法吗?

python - 从类构造函数 [Python/Traits] 中更改属性参数

javascript - Function 和 new Function 的区别

c++ - 如何按文件大小降序对文件进行排序

c++ - qt鼠标事件等于触摸屏事件吗?

c++ - 混合程序(asm+cpp): sending and receiving an array pointer

c++ - 我可以使用模板而不是宏来创建异常类吗?