thể trùng lặp:
What’s the right way to overload operator== for a class hierarchy?Bình đẳng thử nghiệm cho các lớp thừa kế trong C++
Trong C++, làm thế nào các lớp thừa kế có thể ghi đè lên các bài kiểm tra bình đẳng lớp cơ sở trong một cách có ý nghĩa? Ví dụ, nói rằng tôi có một lớp cơ sở A. Lớp B và C lấy được từ A. Bây giờ cho hai con trỏ đến hai đối tượng A, tôi có thể kiểm tra nếu chúng bằng nhau (bao gồm cả dữ liệu lớp con) không?
class A {
public: int data;
};
class B : public A {
public: float more_data; bool something_else;
};
class C : public A {
public: double more_data;
};
A* one = new B;
A* two = new B;
A* three = new C;
//How can I test if one, two, or three are equal
//including any derived class data?
Có cách nào làm sạch không? Đặt cược tốt nhất của tôi là gì?
Cảm ơn!
Có thể trùng lặp: http://stackoverflow.com/questions/1691007/whats-the-right-way-to-overload-operator-for-a-class-hierarchy –
Bạn có muốn so sánh 'T == T không ', trong đó' T' có thể là 'A',' B', hoặc 'C' (tốt), hoặc bạn muốn so sánh' A' với 'B' và' A' với 'C' và' B' với 'C' (có vấn đề)? – sbi
Trong ví dụ trên, tôi muốn so sánh một với hai và ba. Họ đều là một con trỏ. – Imbue