C++ 类对象的打印向量

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++) {

我有三个类,一个基类:设备,和两个派生类:智能手机和平板电脑

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++)
{
    devices[i].print();
}
智能手机派生类:

void print();
-

void智能手机::打印()
{
printName();

cout您需要对设备向量中的每个元素调用
print
函数,而不是对向量本身

devices[i].print()

您使用指针,因此需要使用指针语义:

devices[i]->print();
运算符
->
for
std::unique\u ptr
返回它管理的对象(即
设备
实例),您可以对其调用方法

操作符
尝试调用
std::unique_ptr
对象上的方法,而此类没有任何名为
print
的方法


还请注意,方法的声明使其无法与
std::cout
一起使用。要使其工作,必须将函数更改为
运算符重载问题在于
打印()
不是你的for循环。你可能想定义操作符
打印的声明是什么?
?不要用散文描述你的代码,显示这是一个(几乎)好的答案,但OP在发布后更改了问题。。。
devices[i].print()
devices[i]->print();