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

Объявление класса Point - C++

Восстановить пароль Регистрация
 
 
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
05.04.2014, 16:40     Объявление класса Point #1
Объявил класс Point в заголовочном класса для хранения значений координат x,y а далее класс Rectanagle
и вот в классе Rectanagle каждая точка определяет координаты на плоскости линий и используется для создания объекта Rectanagle но при объявлении в нем переменной тип int - требует точку с запятой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
 class Rectangle
{
public:
    Rectangle (int top, int left, int Bottom, int right);
    ~Rectangle ()
    
 
    
    int GetTop()  const { return itsTop; }
    int GetLeft() const { return itsLeft; }
    int GetBottom() const { return itsBottom; }
    int GetRight() const { return itsRight; }
Код
В строке int GetTop()  const { return itsTop; }
Здесь сразу встроены функции а их реализация в файле Ractanagle.cpp

Код на C++

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
class Point
{
public:
    void setX( int x) { itsX = x; }
    void setY( int y) { itsY = y; }
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
private:
    int itsX;
    int itsY;
};
 
class Rectangle
{
public:
    Rectangle (int top, int left, int Bottom, int right);
    ~Rectangle ()
    
 
    
    int GetTop()  const { return itsTop; }
    int GetLeft() const { return itsLeft; }
    int GetBottom() const { return itsBottom; }
    int GetRight() const { return itsRight; }
 
    Point GetUpperLeft () const { return itsUpperLeft; }
    Point GetLowerleft () const { return itsLowerLeft; }
    Point GetUpperRight () const { return itsUpperRight; }
    Point GetLowerRight () const { return itsLowerRight; }
 
    void SetUpperLeft(Point Location)
           { itsUpperLeft = Location; }
    void SetLowerleft (Point Location) 
           { itsLowerLeft = Location; }
    void SetUpperRight( Point = Location)
           { itsUpperRight = Location; } 
    void SetLowerRigh(Point Location)
           { itsLowerRight = Location; }
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsbottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea const;
 
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
07.04.2014, 15:41     Объявление класса Point
  #21

Не по теме:

SatanaXIII, Не могу пока придумать программу воспитательных работ, чтобы искоренить вечное "Все сломалось, ничего не работает" =_=

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
07.04.2014, 15:48
  #22

Не по теме:

0x10, попытки были: Как запостить тему, чтобы не получить ответ

zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:03  [ТС]     Объявление класса Point #23
Код:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
using namespace std;
class Point
{
public:
    void setX( int x) { itsX = x; }
    void setY( int y) { itsY = y; }
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
private:
    int itsX;
    int itsY;
};
 
class Rectangle
{
public:
    Rectangle( int top, int left, int Bottom, int right )
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = Bottom;
        itsRight  = right;
      }
   ~Rectangle() 
     {
        top = 0; 
        left   = 0;
        Bottom = 0;
        right  = 0;
      };
    
    int GetTop()  const { return itsTop; }
    int GetLeft() const { return itsLeft; }
    int GetBottom() const { return itsBottom; }
    int GetRight() const { return itsRight; }
 
    Point GetUpperLeft () const { return itsUpperLeft; }
    Point GetLowerleft () const { return itsLowerLeft; }
    Point GetUpperRight () const { return itsUpperRight; }
    Point GetLowerRight () const { return itsLowerRight; }
 
    void SetUpperLeft(Point Location)
           { itsUpperLeft = Location; }
    void SetLowerleft (Point Location) 
           { itsLowerLeft = Location; }
    void SetUpperRight( Point  Location)
           { itsUpperRight = Location; } 
    void SetLowerRigh(Point Location)
           { itsLowerRight = Location; }
 
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsBottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea() const;
    
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
Код
1>------ Построение начато: проект: Rectangle, Конфигурация: Debug Win32 ------
1>  Rectangle.cpp
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.h(27): error C2065: top: необъявленный идентификатор
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.h(28): error C2659: =: функция в качестве левого операнда
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.h(29): error C2065: Bottom: необъявленный идентификатор
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.h(30): error C2659: =: функция в качестве левого операнда
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.cpp(9): error C2084: функция "Rectangle::Rectangle(int,int,int,int)" уже имеет текст реализации
1>          c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.h(18): см. предыдущее определение "{ctor}"
1>c:\users\игорь\documents\visual studio 2010\projects\rectangle\rectangle\rectangle.cpp(37): error C2264: Rectangle::Rectangle: ошибка в определении или объявлении функции; функция не вызвана
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
07.04.2014, 16:07     Объявление класса Point #24
zero-11, удалите-ка деструктор... Совсем. Он тут все равно не нужен.
И где-то похоже конструктор определен второй раз (в rectangle.cpp).
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
07.04.2014, 16:15     Объявление класса Point #25
zero-11, создайте новый пустой консольный проект. Скопируйте в него ровно тот код, который вы нам предоставляете. Запустите. Покажите ошибки. Потому как что-то вы не так делаете, - какой-то у вас там хаос.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:18  [ТС]     Объявление класса Point #26
Код
Площадь вычислил верно
Area:3000

Код
А вот координату X - нет
Upper Left Coordinate: -858993460

Скомпилиравался но значение координаты х - не выводит.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
07.04.2014, 16:30     Объявление класса Point #27
zero-11, почитайте еще http://www.sscce.org/
Иначе при такой постановке вопроса ответ Вы можете не получить.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
07.04.2014, 16:33     Объявление класса Point #28
zero-11, отвечайте пожалуйста четко: "вот такой-то код приводит к таким-то ошибкам", иначе помочь вам затруднительно.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:35  [ТС]     Объявление класса Point #29
Rectangle.h

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
using namespace std;
class Point
{
public:
    void setX( int x) { itsX = x; }
    void setY( int y) { itsY = y; }
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
private:
    int itsX;
    int itsY;
};
 
class Rectangle
{
public:
    Rectangle( int top, int left, int Bottom, int right )
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = Bottom;
        itsRight  = right;
      }
   ~Rectangle() 
     {
       itsTop = 0;
       itsLeft = 0;
       itsBottom = 0;
       itsRight = 0;
      };
    
    int GetTop()  const { return itsTop; }
    int GetLeft() const { return itsLeft; }
    int GetBottom() const { return itsBottom; }
    int GetRight() const { return itsRight; }
 
    Point GetUpperLeft () const { return itsUpperLeft; }
    Point GetLowerleft () const { return itsLowerLeft; }
    Point GetUpperRight () const { return itsUpperRight; }
    Point GetLowerRight () const { return itsLowerRight; }
 
    void SetUpperLeft(Point Location)
           { itsUpperLeft = Location; }
    void SetLowerleft (Point Location) 
           { itsLowerLeft = Location; }
    void SetUpperRight( Point  Location)
           { itsUpperRight = Location; } 
    void SetLowerRigh(Point Location)
           { itsLowerRight = Location; }
 
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsBottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea() const;
    
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
Rectangle.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
 // Rectangle.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "Rectangle.h"
 
 
int Rectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
 
int main()
{
    Rectangle MyRectangle(100, 20, 50, 80 );
 
    int Area = MyRectangle.GetArea();
 
    std::cout << "Area: " << Area << endl;
    std::cout << "Upper Left X Coordinate: ";
    std::cout << MyRectangle.GetUpperLeft().GetX();
    system("PAUSE");
}
Не верно выводит значение координаты x.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
07.04.2014, 16:47     Объявление класса Point #30
Очевидно потому что объект itsUpperLeft и аналогичные инициализированы мусором.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 21:00  [ТС]     Объявление класса Point #31
Он не выдает сообщений об ошибках - если убрать повторную инициализацию конструктора - она компилируется и верно выводит первое значение площади :

Area: 3000

x -значение х выводится не верно - его нужно как -то иначе инициализировать.


Добавлено через 16 минут
Проблема явно здесь :

C++
1
2
3
4
5
6
7
8
void SetUpperLeft(Point Location)
           { itsUpperLeft = Location; }
    void SetLowerleft (Point Location) 
           { itsLowerLeft = Location; }
    void SetUpperRight( Point = Location)
           { itsUpperRight = Location; } 
    void SetLowerRigh(Point Location)
           { itsLowerRight = Location; }
Нужно определить Location в классе Point - может кто знает-?

Так как :

C++
1
2
3
4
itsTop    = top;
        itsLeft   = left;
        itsBottom = bottom;
        itsRight  = right;
определены в конструктора а в деструкторе выполняется освобождение зарезервированной памяти:

C++
1
2
3
4
5
6
7
  ~MyRectangle()
     {
       itsTop = 0;
       itsLeft = 0;
       itsBottom = 0;
       itsRight = 0;
      };
По этому этот фрагмент кода отрабатывает нормально:

C++
1
2
3
4
5
6
int MyRectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
Но при попытке обратится к переменным и происходит ошибка:

C++
1
MyRectangle Rectangle( 100, 20, 50, 80 );
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
08.04.2014, 08:05     Объявление класса Point #32
Цитата Сообщение от zero-11 Посмотреть сообщение
x -значение х выводится не верно - его нужно как -то иначе инициализировать.
Покажите место, где ему присваивается хоть какое-нибудь вменяемое значение. Когда не найдете - допишите соответствующий код.

Цитата Сообщение от zero-11 Посмотреть сообщение
деструкторе выполняется освобождение зарезервированной памяти:
В данном случае это не освобождение памяти, а бесполезное обнуление значений переменных, не более того.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
08.04.2014, 09:06     Объявление класса Point #33
zero-11, у вас в первом варианте вами предоставленного кода не было ни тела конструктора (и деструктора), ни тела функции GetArea. Конструктор мы вам починили. Но выяснилось, что реализация GetArea оказывается есть вне класса. Так может быть там же есть еще и реализация конструктора? А ым вам тут пытаемся франкенштейна оживить. Покажите весь код, из которого вы взяли вот это:
C++
1
2
3
4
5
6
int MyRectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
08.04.2014, 09:13     Объявление класса Point #34
SatanaXIII, да он весь код привел в этом посте Объявление класса Point
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
08.04.2014, 13:54  [ТС]     Объявление класса Point #35
Полный исходник:

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
#include "stdafx.h"
#include <iostream>
#include "Rectangle.h"
 
 
 
int MyRectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
 
int main()
{
MyRectangle Rectangle( 100, 20, 50, 80 );
 
    int Area = Rectangle.GetArea();
 
    std::cout << "Area: " << Area ;
    std::cout << "Upper Left X Coordinate: ";
    std::cout << Rectangle.GetUpperLeft().GetX();
    system("PAUSE");
}
Добавлено через 2 часа 5 минут
Я переписал код:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
using namespace std;
class Point 
{
public:
    int top;
    int left;
    int bottom;
    int right;
 
 void setX( int x) { itsX = x; }
    void setY     ( int y) { itsY = y; }
    int GetX() const { return itsX; ( left), ( right); }
    int GetY() const { return itsY; (top), ( bottom); }
private:
    int itsX;
    int itsY;
};
 
class MyRectangle
{
public:
   MyRectangle(int top, int left, int bottom, int right)
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = bottom;
        itsRight  = right;
    }
   ~MyRectangle()
     {
       itsTop = 0;
       itsLeft = 0;
       itsBottom = 0;
       itsRight = 0;
   };
    
    
    int left;   
    int right;
    int top;     
    int bottom;
 
 
   Point GetUpperLeft () const { return itsUpperLeft; (left), (top);}
   Point GetLowerleft () const { return itsLowerLeft; ( left), (bottom);}
   Point GetUpperRight () const { return itsUpperRight; (right), ( top );}
   Point GetLowerRight () const { return itsLowerRight; (right), (bottom);}
 
    
 
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsBottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea() const;
    
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
Пробую такую реализацию - для доступа к классу Point используется GetX() - из MyRectangle - для получения доступа к значению itsX = x - как можно непосредственно ее инициализировать-?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
08.04.2014, 14:12     Объявление класса Point #36
В общем, у меня складывается впечаление, что автор не читает что ему пишут, а код правит наугад.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
using namespace std;
 
class Point 
{
public:
    Point(int x, int y): itsX(x), itsY(y) {}
 
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
 
private:
    int itsX;
    int itsY;
};
 
class MyRectangle
{
public:
    MyRectangle(int top, int left, int bottom, int right):
        itsUpperLeft(left, top),
        itsUpperRight(right, top),
        itsLowerRight(right, bottom),
        itsLowerLeft(left, bottom)
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = bottom;
        itsRight  = right;
    }
    
    Point GetUpperLeft() const { return itsUpperLeft; }
    Point GetLowerleft() const { return itsLowerLeft; }
    Point GetUpperRight() const { return itsUpperRight; }
    Point GetLowerRight() const { return itsLowerRight; }
 
    int GetArea() const;
 
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
 
int MyRectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
 
int main()
{
    MyRectangle Rectangle( 100, 20, 50, 80 );
    
    int Area = Rectangle.GetArea();
    
    std::cout << "Area: " << Area << endl;
    std::cout << "Upper Left X Coordinate: ";
    std::cout << Rectangle.GetUpperLeft().GetX();
}
http://ideone.com/3gMQVt

Смотрите, все ли так, дальше правьте сами.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
08.04.2014, 15:42  [ТС]     Объявление класса Point #37
Сделал! Вот привожу рабочий исходник:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
using namespace std;
class Point 
{
public:
    void setX(int x) { itsX = x; }
    void setY(int y) { itsY = y; }
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
private:
    int itsX;
    int itsY;
 
    int GetArea() const;
};
 
class MyRectangle
{
public:
   MyRectangle(int top, int left, int bottom, int right)
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = bottom;
        itsRight  = right;
   
    itsUpperLeft.setX(left);
    itsUpperLeft.setY(top);
 
    itsUpperRight.setX(right);
    itsUpperRight.setY(top);
 
    itsLowerLeft.setX(left);
    itsLowerLeft.setX(bottom);
 
    itsLowerRight.setX(right);
    itsLowerRight.setY(bottom);
   
   }
   ~MyRectangle()
     {
       itsTop = 0;
       itsLeft = 0;
       itsBottom = 0;
       itsRight = 0;
   };
    
   int GeTop() const { return itsTop; }
   int GetLeft() const { return itsLeft;}
   int GetBottom() const { return itsBottom;}
   int GetRight() const { return itsRight;}
    
 
   Point GetUpperLeft () const { return itsUpperLeft; }
   Point GetLowerLeft () const { return itsLowerLeft; }
   Point GetUpperRight () const { return itsUpperRight;}
   Point GetLowerRight () const { return itsLowerRight;}
 
   void SetUpperleft(Point Location)
   { itsUpperLeft = Location;}
   void SetLowerLeft(Point Location)
   { itsLowerLeft = Location;}
   void SetUpperRight(Point Location)
   { itsUpperRight = Location;}
   void SetLowerRight(Point Location)
   { itsLowerRight = Location;}
 
 
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsBottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea() const;
 
    int GetX();
    
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
 
 
};
 
class GetArea
{
public:
    int itsX;
    int itsY;
 
    void setX (int x) { itsX=x; }
    void setY (int y) { itsY=y; }
    int GetX() const { return itsX;}
    int GetY() const { return itsY;}
};
Код
// Rectangle.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include "Rectangle.h"
	



int MyRectangle::GetArea() const
{
	int Width = itsRight - itsLeft;
	int Height = itsTop - itsBottom;
	return ( Width * Height );
}

int main()
{
MyRectangle Rectangle( 100, 20, 50, 80 );

	int Area = Rectangle.GetArea();


	std::cout << "Area: " << Area ;
	std::cout << "Upper Left X Coordinate: ";
	std::cout << Rectangle.GetUpperLeft().GetX();
	system("PAUSE");
}
Добавлено через 17 минут
Неверно был объявлен конструктор - он должен был полностью объявляться в классе и инициализировать функции-члены класса - а функции доступа были объявлены повторно в реализации данного класса:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Rectangl.h
#include <iostream>
using namespace std;
class Point 
{
public:
    void setX(int x) { itsX = x; }
    void setY(int y) { itsY = y; }
    int GetX() const { return itsX; }
    int GetY() const { return itsY; }
private:
    int itsX;
    int itsY;
 
    int GetArea() const;
};
 
class MyRectangle
{
public:
   MyRectangle(int top, int left, int bottom, int right)
    {
        itsTop    = top;
        itsLeft   = left;
        itsBottom = bottom;
        itsRight  = right;
   
    itsUpperLeft.setX(left);
    itsUpperLeft.setY(top);
 
    itsUpperRight.setX(right);
    itsUpperRight.setY(top);
 
    itsLowerLeft.setX(left);
    itsLowerLeft.setX(bottom);
 
    itsLowerRight.setX(right);
    itsLowerRight.setY(bottom);
   
   }
   ~MyRectangle()
     {
       itsTop = 0;
       itsLeft = 0;
       itsBottom = 0;
       itsRight = 0;
   };
    
   int GeTop() const { return itsTop; }
   int GetLeft() const { return itsLeft;}
   int GetBottom() const { return itsBottom;}
   int GetRight() const { return itsRight;}
    
 
   Point GetUpperLeft () const { return itsUpperLeft; }
   Point GetLowerLeft () const { return itsLowerLeft; }
   Point GetUpperRight () const { return itsUpperRight;}
   Point GetLowerRight () const { return itsLowerRight;}
 
   void SetUpperleft(Point Location)
   { itsUpperLeft = Location;}
   void SetLowerLeft(Point Location)
   { itsLowerLeft = Location;}
   void SetUpperRight(Point Location)
   { itsUpperRight = Location;}
   void SetLowerRight(Point Location)
   { itsLowerRight = Location;}
 
 
 
    void SetTop (int top)               { itsTop = top; }
    void Setleft (int left)             { itsLeft = left; }
    void SetBottom(int bottom)          { itsBottom = bottom;}
    void SetRight(int right)            { itsRight = right; }
 
    int GetArea() const;
 
    
    
private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
 
 
};
Rectangle.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
// Rectangle.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "Rectangle.h"
    
 
 
 
int MyRectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return ( Width * Height );
}
 
int main()
{
MyRectangle Rectangle( 100, 20, 50, 80 );
 
    int Area = Rectangle.GetArea();
 
 
    std::cout << "Area: " << Area ;
    std::cout << "Upper Left X Coordinate: ";
    std::cout << Rectangle.GetUpperLeft().GetX();
    system("PAUSE");
}
Rectangle.cpp содержит реализацию класса и компилятор не мог выполнить инициализацию в реализации класса - при том что конструктор уже был объявлен и инициализировать члены данного класса.
SatanaXIII
08.04.2014, 15:46
  #38
 Комментарий модератора 
zero-11, загружайте изображения на форум (http://www.cyberforum.ru/about-forum...tml#post594251) и обрамляйте код в соответствующие теги.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2014, 20:35     Объявление класса Point
Еще ссылки по теме:

объявление дружественного класса внутри класса C++
Объявление шаблонного класса C++
C++ Объявление класса

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

Или воспользуйтесь поиском по форуму:
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
08.04.2014, 20:35  [ТС]     Объявление класса Point #39
Объявление класса Point
Yandex
Объявления
08.04.2014, 20:35     Объявление класса Point
Ответ Создать тему
Опции темы

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