【发布时间】:2015-08-13 12:54:08
【问题描述】:
我在 BirdHouse 的构造函数初始化列表中初始化指向 Bird 的指针时遇到问题。好像没有指向我要指向的对象。
这是 Bird 类:
class Bird
{
std::string name;
static int objectCount;
public:
Bird () : name("Bird #" + std::to_string(objectCount))
{
++objectCount;
}
Bird (const Bird& bb) : name(bb.name + " copy")
{
}
friend class BirdHouse;
};
这里是 BirdHouse 类:
class BirdHouse
{
Bird b;
Bird * bp;
Bird & br;
public:
BirdHouse(Bird aa, Bird bb, Bird cc) : b(aa), bp(&bb), br(cc) {}
void print() const
{
std::cout << "Bird b = " << b.name << std::endl;
std::cout << "Bird * bp = " << bp->name << std::endl;
std::cout << "Bird & br = " << br.name << std::endl;
}
};
当我想在 main() 中调用 BirdHouse::print() 时,程序崩溃:
int main()
{
Bird b1;
Bird b2;
Bird b3 = b2;
BirdHouse bh1(b1,b2,b3);
// bh1.print(); // I can't call it because b2 points to weird stuff
return 0;
}
我应该如何初始化 BirdHouse 对象,使其指向合适的 Bird 对象?
【问题讨论】:
标签: c++ pointers initializer-list