Страница 2 из 2

Re: friend

Добавлено: 05 июл 2010, 00:57
Lotles
guest_48 писал(а):Вот именно поэтому пример и бессмысленный! :)

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

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

Программа не работает
Написали friend
Программа заработала
В программе нет закрытой части
Так зачем нужен friend или как работает прога :confused:

Re: friend

Добавлено: 05 июл 2010, 01:22
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, вынесите определение оператора за пределы класса. Программа тоже работает... вас это не смущает?

Re: friend

Добавлено: 05 июл 2010, 01:39
Lotles
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, вынесите определение оператора за пределы класса. Программа тоже работает... вас это не смущает?
У меня вобще нет ни одной ошибки

Re: friend

Добавлено: 01 сен 2010, 16:02
TDUTY

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

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