gpt4 book ai didi

c++ - 打印出对象 vector 中的每个元素 C++

转载 作者:行者123 更新时间:2023-11-28 04:02:19 25 4
gpt4 key购买 nike

我试图输出存储在 vector 中的对象,但我一直在获取这些对象的地址,而不是实际对象的名称。

vector <Shape*> shapes;

for (std::vector<Shape*>::iterator it = shapes.begin(); it != shapes.end(); ++it)
std::cout << *it << endl;

输出:

Enter the command: display
01724888
017309B0
01731238

对象如何存储在形状中的示例:

Circle* c = new Circle(x, y, r);
shapes.push_back(c);

最佳答案

由于 vector 中的元素是指针,*it为您提供这些指针的值,但指针存储地址。如果你想得到那些地址下的值,你应该使用**it .这Shape class 可以打印面积、体积或其尺寸。您应该创建一个方法来 printVolume()这个或一个overloading operator <<

示例代码

#include <iostream>

class Shape
{
private:
int _x, _y, _z;
public:
Shape(int x, int y, int z): _x(x), _y(y), _z(z)
{
}
void printVolume()
{
std::cout << "Print volume: " << _x * _y * _z << std::endl;
}

friend std::ostream &operator<< (std::ostream &out, const Shape& object)
{
std::cout << "Inside overload operator to return the volume" << std::endl;
out << object._x * object._y * object._z << std::endl;
return out;
}
};


int main ()
{
Shape cube(1, 2, 3);
std::cout << cube;
return 0;
}

关于c++ - 打印出对象 vector 中的每个元素 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59293477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com