C++ 类对象的打印向量
我有三个类,一个基类:设备,和两个派生类:智能手机和平板电脑 Print是在派生类中重新定义的虚拟函数。 我想创建设备的STL向量(包括智能手机和平板电脑的实例),然后打印向量中对象的名称C++ 类对象的打印向量,c++,vector,C++,Vector,我有三个类,一个基类:设备,和两个派生类:智能手机和平板电脑 Print是在派生类中重新定义的虚拟函数。 我想创建设备的STL向量(包括智能手机和平板电脑的实例),然后打印向量中对象的名称 vector<unique_ptr<Device>> devices(3); devices[0].reset(new SmartPhone(128, 8)); // memory size, screen size for (int i = 0; i < 3; i++) {
vector<unique_ptr<Device>> devices(3);
devices[0].reset(new SmartPhone(128, 8));
// memory size, screen size
for (int i = 0; i < 3; i++)
{
devices[i].print();
}
智能手机派生类:
void print();
-
void智能手机::打印()
{
printName();
cout您需要对设备向量中的每个元素调用print
函数,而不是对向量本身
devices[i].print()
您使用指针,因此需要使用指针语义:
devices[i]->print();
运算符->
forstd::unique\u ptr
返回它管理的对象(即设备
实例),您可以对其调用方法
操作符
尝试调用std::unique_ptr
对象上的方法,而此类没有任何名为print
的方法
还请注意,方法的声明使其无法与std::cout
一起使用。要使其工作,必须将函数更改为运算符重载问题在于打印()
不是你的for循环。你可能想定义操作符打印的声明是什么?
?不要用散文描述你的代码,显示这是一个(几乎)好的答案,但OP在发布后更改了问题。。。
devices[i].print()
devices[i]->print();