这是如何编译和工作的:
class MyObject {
public:
MyObject() {}
};
struct ItemGood {
int Number;
MyObject *Object;
ItemGood(int Number, MyObject *Object) {
this->Number = Number;
this->Object = Object;
}
};
const ItemGood ItemGoodList[] =
{
{ 0, new MyObject() },
{ 1, new MyObject() }
};
这根本不编译:
class MyObject {
public:
MyObject() {}
};
struct ItemBad {
int Number;
std::auto_ptr<MyObject> AutoObject;
ItemBad(int Number, MyObject *Object) {
this->Number = Number;
AutoObject = std::auto_ptr<MyObject>(Object);
}
};
const ItemBad ItemBadList[] =
{
{ 0, new MyObject() },
{ 1, new MyObject() }
};
编译器吐出的错误是:
没有匹配函数调用 'ItemBad::ItemBad(ItemBad)
我不明白为什么有些东西试图调用该构造函数,我不明白这个初始化列表中实际发生了什么。