Re: friend
Добавлено: 05 июл 2010, 00:57
guest_48 писал(а):Вот именно поэтому пример и бессмысленный!![]()
Решите уравнение:
Код: Выделить всё
Программа не работает
Написали friend
Программа заработала
В программе нет закрытой части

guest_48 писал(а):Вот именно поэтому пример и бессмысленный!![]()
Код: Выделить всё
Программа не работает
Написали friend
Программа заработала
В программе нет закрытой части
У меня вобще нет ни одной ошибкиguest_48 писал(а):Я не знаю, что вам ответить... Я могу вам много таких примеров наговнокодить, и я не понимаю почему вас интересует именно этот говнокод.. Что в нем такого... особенного
Давайте рассмотрим, что ли ошибки...
error C2804: binary 'operator *' has too many parameters
error C2333: 'Point: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, вынесите определение оператора за пределы класса. Программа тоже работает... вас это не смущает?
Код: Выделить всё
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;
}