【发布时间】:2017-02-12 19:10:47
【问题描述】:
我有 2 个向量,类型为指向 Point 的指针以利用多态思想,因为我有一些继承自 Point 类的点类。
vector<Point*> previous_points;
vector<Point*> current_points;
init_points(previous_points);
init_points(current_points);
do_some_proccess(previous_points);
do_some_proccess(current_points);
cout << (previous_points == current_points) << endl; // returns 0
即使内容相同, == 运算符也会返回 0,原因是(根据我的阅读和理解)它正在比较作为指针的向量内容,并且指针当然不一样( init_points 为每个向量创建具有相同内容的新对象)。
我的问题是,我仍然可以使用比较运算符并让它比较向量中指针的内容而不是指针本身吗?还是我必须实现自己的 is_content_equals 函数才能做到这一点?
编辑:我在 Point 类中实现了 equals == 运算符,因此它正在比较点的内容。
谢谢
【问题讨论】:
-
如果指针不一样,则内容不一样。
-
您的比较只会比较向量中的指针,而不是它们指向的对象。
-
我已经在 Point 类中实现了 equals == 运算符,因此它可以比较内容。忘记说了。
-
@JoachimPileborg 这是我的问题,我是否需要实现自己的功能才能做到这一点?或者我仍然可以使用运算符?