С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 186
Записей в блоге: 1
#1

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

03.02.2013, 13:31. Просмотров 315. Ответов 4
Метки нет (Все метки)

Есть два класса.
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;
}

Вот проблема, скажите где почитать,или как правильно писать перегруженные методы за классом.
Спасибо заранее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2013, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Синтаксическая ошибка при определении метода перегруженного оператора,за классом (C++):

Синтаксическая ошибка при определении массива - C++
Не определяется массив int choiceLevel (); int main () { string answer; int level= choiceLevel (); while (answer!=&quot;exit&quot;) {...

Ошибка при вызове в switch перегруженного оператора - C++
есть перегруженный оператор: std::istream&amp; operator&gt;&gt;(istream&amp; is, diagram&amp; dd) { string kod; std::cout&lt;&lt;&quot;Vvedite kod:&quot;&lt;&lt;endl; ...

Ошибка при использовании перегруженного оператора вывода в поток: no match for 'operator<<' - C++
Пытаюсь написать класс комплексных чисел, но не могу сделать вот что: #include &lt;iostream&gt; #include &quot;head.h&quot; using namespace std; ...

Ошибка в определении шаблонного метода - C++
Подскажите пожалуйста, что делаю не так в определении шаблонного метода. Вот код: // test.cpp #include &lt;iostream&gt; #include...

Вызов перегруженного оператора - C++
В классе Ellipse есть перезагрузка, не могу ее вызвать в main вот само задание: Создать класс Ellipse,содержащий следующие...

Использование перегруженного оператора << - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &lt;algorithm&gt; using namespace std; class...

4
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 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
Конкретнее можно ошибку ?
1
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
03.02.2013, 13:45 #3
В реализации конструктора не надо указывать значения параметров по умолчанию, они уже указаны в заголовке. Оператор >> тоже должен возвращать поток (is). Включения <iostream> в коде нигде не видно, но вероятно, где-то оно есть...
1
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
03.02.2013, 13:46 #4
Цитата Сообщение от Borkot Посмотреть сообщение
Point1::&Pointer1 *operator -> ()const
???
Цитата Сообщение от Borkot Посмотреть сообщение
Point1 *operator -> ()const;
1
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 186
Записей в блоге: 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;
}
0
03.02.2013, 15:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 15:55
Привет! Вот еще темы с ответами:

Странный вывод перегруженного оператора - C++
Здравствуйте. Делаю цепочки вывода, но получается вот что: Почему выводится число 0x605508 ? Непечатный символ что-ли какой-то? И,...

указатель this внутри перегруженного оператора сложения - C++
пишу класс Fraction для работы с дробными числами. Почему не допускает использовать this, пишет: &quot;Error: оператор this можно использовать...

Выбор перегруженного метода - C++
Этот вопрос вырос из этого вопроса . Почему при integral conversions/promotions нет приоритетов &quot;сужающее&quot; или &quot;расширяющее&quot; при выборе...

Шаблон класса и перегруженного оператора отказываются дружить - C++
Всем привет! Помогите разобраться с шаблонами, не получается подружить шаблон класса и шаблон перегруженного оператора. Выдает ошибку. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.