Я изучаю функциональность перегрузки оператора в C++, и я столкнулся с проблемой. Вот мой код:Оператор oveloading, сравнивающий два значения от
template <typename T>
class W
{
public:
bool operator==(W&);
T x;
};
template <typename T>
bool W<T>::operator==(W& w2)
{
printf("\n%d, %d\n", x, w2.x);
if(x == w2.x) return true;
else return false;
}
int main()
{
W<int>* w1 = new W<int>;
W<int>* w2 = new W<int>;
w1->x = 10;
w2->x = 10;
if(w1 == w2) printf("same");
else printf("not");
}
Результат: «нет». И функция printf не вызывается в перегруженной функции bool. Если я инициализирую объекты таким образом:
W<int> w1;
W<int> w2;
w1.x = 10;
w2.x = 10;
это работает. Но в моем случае я использую только первые объекты примера (в моем другом проекте). Поэтому мой вопрос: как передать объекты, и это сработает. Благодарю.