我在编译以下代码时遇到了问题:
#include <QVector>
#include <QDebug>
#include <vector>
class item
{
int var;
public:
//Without default constructor this program will not compile
//item(){}
item(int value)
{
var = value;
}
int getVar()
{
return var;
}
};
int main()
{
//This code will not compile
QVector<item> y;
y.append(item(1));
qDebug() << y[0].getVar();
//std::vector however will work despite an absence of a default contructor
std::vector<item> z;
z.push_back(item(1));
qDebug() << z.at(0).getVar();
return 0;
}
准确来说,这个追加行不会编译。
为什么在这种情况下item必须要有一个默认的构造函数?
QVector::resize
能够默认构造item
s。 - undefinedvector
只有在使用resize
或类似的强制默认构造函数时才会出现问题。QVector
可能在幕后有更多的操作。我必须把这个问题留给那些对QT非常熟悉的人来解决。 - undefined