Форум программистов, компьютерный форум CyberForum.ru

Синтаксическая ошибка при определении метода перегруженного оператора,за классом - C++

Восстановить пароль Регистрация
 
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 182
Записей в блоге: 1
03.02.2013, 13:31     Синтаксическая ошибка при определении метода перегруженного оператора,за классом #1
Есть два класса.
Point1 и Pointer1
Синтаксическая Ошибка в Pointer1.cpp в перегрузке операторов.

Point1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include"stdafx.h"
class Point1
{
private:
    double x,y;
public:
    Point1(double a=1,double b=1)
    {x=a;y=b;}
    ~Point1(void);
    void Set(double a,double b);
    void Print();
    friend istream &operator >>(istream &is,Point1 &A);
    friend ostream &operator << (ostream &os,const Point1 &A);
};
Point1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "Point1.h"
 
 
/*Point1::Point1(double a=1,double b=1)
{
    x=a;y=b;
}  */
 
 
Point1::~Point1(void)
{
}
 
void Point1::Set(double a,double b)
{
   x=a;y=b;
}
 
void Point1::Print()
{
   cout<<"x= "<<x<<"\ty= "<<y<<endl;
}
 
istream &operator >>(istream &is,Point1 &A)
{
    cout<<"X="<<A.x<<endl;
    cout<<"Y="<<A.y<<endl;
}
 
ostream &operator <<(ostream &os,const Point1 &A)
{
    os<<"X="<<A.x<<endl; os<<"Y="<<A.y<<endl;
    return os;
}
 
//почему так определяется
Pointer1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include"Point1.h"
class Pointer1
{
    
public:
    Point1 *ptr;
    void Set(double a,double b);
    Pointer1(Point1 *A);
    ~Pointer1(void);
    Point1 *operator -> ()const;
    Pointer1 operator ++();
    void Print();
};
Pointer1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "Pointer1.h"
 
 
Pointer1::Pointer1(Point1 *A)
{
  ptr=A;
}
 
 
Pointer1::~Pointer1(void)
{
 
}
 
Point1::&Pointer1 *operator -> ()const   //Не правильно определен метод за классом 
{
  return ptr;
}
 
Pointer1 Pointer1:: operator ++()  //Здесь синтаксическая ошибка
{
     ptr++;
     return *this;
}
 
void Pointer1::Set(double a,double b)
{
   x=a;y=b;
}
void Pointer1::Print()
{
   cout<<"x= "<<x<<"\ty= "<<y<<endl;
}

Вот проблема, скажите где почитать,или как правильно писать перегруженные методы за классом.
Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2013, 13:31     Синтаксическая ошибка при определении метода перегруженного оператора,за классом
Посмотрите здесь:

ошибка при вызове в switch перегруженного оператора C++
Шаблон класса и перегруженного оператора отказываются дружить C++
Странный вывод перегруженного оператора C++
Использование перегруженного оператора << C++
C++ Синтаксическая ошибка при определении массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
03.02.2013, 13:43     Синтаксическая ошибка при определении метода перегруженного оператора,за классом #2
Цитата Сообщение от Borkot Посмотреть сообщение
C++
1
2
istream &operator >>(istream &is,Point1 &A) {
 cout<<"X="<<A.x<<endl; cout<<"Y="<<A.y<<endl; }
забыл
C++
1
return is
Конкретнее можно ошибку ?
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
03.02.2013, 13:45     Синтаксическая ошибка при определении метода перегруженного оператора,за классом #3
В реализации конструктора не надо указывать значения параметров по умолчанию, они уже указаны в заголовке. Оператор >> тоже должен возвращать поток (is). Включения <iostream> в коде нигде не видно, но вероятно, где-то оно есть...
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
03.02.2013, 13:46     Синтаксическая ошибка при определении метода перегруженного оператора,за классом #4
Цитата Сообщение от Borkot Посмотреть сообщение
Point1::&Pointer1 *operator -> ()const
???
Цитата Сообщение от Borkot Посмотреть сообщение
Point1 *operator -> ()const;
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 182
Записей в блоге: 1
03.02.2013, 15:55  [ТС]     Синтаксическая ошибка при определении метода перегруженного оператора,за классом #5
А звеняйте
не
C++
1
Point1::&Pointer1 *operator -> ()const
C++
1
Point1::&Pointer1 *operator >> ()const
Добавлено через 3 минуты
Цитата Сообщение от Nick Alte Посмотреть сообщение
В реализации конструктора не надо указывать значения параметров по умолчанию, они уже указаны в заголовке. Оператор >> тоже должен возвращать поток (is). Включения <iostream> в коде нигде не видно, но вероятно, где-то оно есть...
Я так понимаю
stdafx.h
C++
1
2
3
#pragma once
#include<iostream>
using namespace std;
Сорри Это Я забыл выложить

Добавлено через 1 час 42 минуты
Цитата Сообщение от m1Rr0r Посмотреть сообщение
забыл
C++
1
return is
Конкретнее можно ошибку ?
Спасибо точно забыл...

Добавлено через 5 минут
C++
1
Point1::&Pointer1 *operator -> ()const
Я так понимаю Указатель типа Point1 определен в классе Pointer1.
Поэтому я так понимаю в .cpp
должно выглядеть так,но видать неправильно понимаю.

Добавлено через 12 минут
Все спасибо...Разобрался точнее помогли Ураа
в Pointer1.cpp описание будет выглядеть так
C++
1
2
3
4
Point1* Pointer1::operator-> ()const
{      
  return ptr;
}
Yandex
Объявления
03.02.2013, 15:55     Синтаксическая ошибка при определении метода перегруженного оператора,за классом
Ответ Создать тему
Опции темы

Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru