friend

Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

guest_48 писал(а):Вот именно поэтому пример и бессмысленный! :)

Решите уравнение:

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

Программа не работает
Написали friend
Программа заработала
В программе нет закрытой части
Так зачем нужен friend или как работает прога :confused:
guest_48
Сообщения: 6
Зарегистрирован: 03 июл 2010, 18:57

Я не знаю, что вам ответить... Я могу вам много таких примеров наговнокодить, и я не понимаю почему вас интересует именно этот говнокод.. Что в нем такого... особенного

Давайте рассмотрим, что ли ошибки...

error C2804: binary 'operator *' has too many parameters
error C2333: 'Point: :o perator *' : error in function declaration; skipping function body
error C2677: binary '*' : no global operator found which takes type 'Point' (or there is no acceptable conversion)

С2804 - очевидно, что объявленный оператор не правильный, операторы объявленные в классе используют самого себя(оператор* который можно объявить в теле класса я приводил ранее).
со вторым все ясно...
C2677 - ожидается глобальный оператор * который принимает Point...

Что не ясно????
Не пишите friend, вынесите определение оператора за пределы класса. Программа тоже работает... вас это не смущает?
Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

guest_48 писал(а):Я не знаю, что вам ответить... Я могу вам много таких примеров наговнокодить, и я не понимаю почему вас интересует именно этот говнокод.. Что в нем такого... особенного

Давайте рассмотрим, что ли ошибки...

error C2804: binary 'operator *' has too many parameters
error C2333: 'Point: :o perator *' : error in function declaration; skipping function body
error C2677: binary '*' : no global operator found which takes type 'Point' (or there is no acceptable conversion)

С2804 - очевидно, что объявленный оператор не правильный, операторы объявленные в классе используют самого себя(оператор* который можно объявить в теле класса я приводил ранее).
со вторым все ясно...
C2677 - ожидается глобальный оператор * который принимает Point...

Что не ясно????
Не пишите friend, вынесите определение оператора за пределы класса. Программа тоже работает... вас это не смущает?
У меня вобще нет ни одной ошибки
Аватара пользователя
TDUTY
Сообщения: 34
Зарегистрирован: 30 янв 2009, 10:20
Контактная информация:

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

class myPoint
{
    public:
        //конструкторы класса
        myPoint() : x(0), y(0) {};
        myPoint(double x, double y) : x(x), y(y) {};
        double x,y;

        //перегрузка операций
        myPoint &operator * (int n)
        {
            return (myPoint &) myPoint(x * n, y * n);
        }
    private:
};

int main(int argc, char* argv[])
{
    myPoint p2( 2.0, 3.0 ), p1;
    p2 = p2 * 5;
    return 0;
}
правда только курит так : myPoint = myPoint * int
а так не курит: myPoint = int * myPoint
Ответить