C ++, не являющийся членом, бинарный оператор с частным наследствомC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++, не являющийся членом, бинарный оператор с частным наследством

Сообщение Anonymous »

Как было указано в другом месте, сообщество считает, что бинарные операторы C ++, такие как ==, должны быть функциями, не являющимися членами. Это представляет для меня проблему с частным наследством. < /P>

Код: Выделить всё

#include 

class Parent
{
public:
Parent(int arg = 0) {}
int member() const { return member_; }
private:
int member_;
};

bool operator== (const Parent& a, const Parent& b) { return a.member() == b.member(); }

class Child : private Parent
{
public:
Child(int arg = 0) : Parent(arg) {}
};

bool operator== (const Child& a, const Child& b)
{
return static_cast (a) == static_cast (b);
}

int main()
{
assert(Child(1) == Child(1));
}
Имея kild operator == Call Parent тривиально, если оператор == является участником, но сделано таким образом, C ++ жалуется, что преобразование от ребенка в родительский является конечным (как это должно быть). взломать?

Подробнее здесь: https://stackoverflow.com/questions/794 ... nheritance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»