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

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

Войти
Регистрация
Восстановить пароль
 
 
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
#1

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

05.04.2014, 16:40. Просмотров 949. Ответов 38
Метки нет (Все метки)

Объявил класс 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;
};
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объявление класса Point (C++):

Объявление объекта класса fstream в качестве статической компоненты другого класса - C++
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса. - C++
Класс Triangle (треугольник). Класс хранит Декартовы координаты трех углов треугольника. Конструктор принимает три группы координат. Должны...

Объявление объекта одного класса в описании другого класса - C++
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой объект уже существует. И почему при...

Объявление дружественного класса внутри класса - C++
class A{ friend class B{ B(A &amp;a); } } Подскажите пожалуйста, такое возможно или нет, я хотел чтобы...

Объявление шаблонного класса - C++
Как объявить шаблонный класс?

Объявление класса Patient - C++
Доброго времени суток! Есть программа, в ней несколько файлов. Есть класс Patient, на который создается указатель в файле...

38
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 15:14  [ТС] #16
Убрал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
      };
не определены:

C++
1
2
3
4
5
6
 {
        top    = 0;
        left   = 0;
        Bottom = 0;
        right  = 0;
      };
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,093
07.04.2014, 15:18 #17
zero-11, в классе и нет таких полей. В вашем случае у полей префикс - its.
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
07.04.2014, 15:23 #18

Не по теме:

Хотел найти картинку с буддой, но не нашел.



zero-11, перепишите деструктор вот так:
C++
1
2
3
4
5
6
7
    ~Rectangle ()
     {
        itsTop    = 0;
        itsLeft   = 0;
        itsBottom = 0;
        itsRight  = 0;
      };
0
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 15:26  [ТС] #19
Уже пробовал - ни в какую!
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
07.04.2014, 15:28 #20
Цитата Сообщение от zero-11 Посмотреть сообщение
Уже пробовал - ни в какую!
Уже слышали. Приводите ошибки. (и за одно полный код с последними правками)
0
0x10
07.04.2014, 15:41
  #21

Не по теме:

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

0
SatanaXIII
07.04.2014, 15:48
  #22

Не по теме:

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

0
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:03  [ТС] #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 ==========
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,093
07.04.2014, 16:07 #24
zero-11, удалите-ка деструктор... Совсем. Он тут все равно не нужен.
И где-то похоже конструктор определен второй раз (в rectangle.cpp).
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
07.04.2014, 16:15 #25
zero-11, создайте новый пустой консольный проект. Скопируйте в него ровно тот код, который вы нам предоставляете. Запустите. Покажите ошибки. Потому как что-то вы не так делаете, - какой-то у вас там хаос.
0
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:18  [ТС] #26
Код
Площадь вычислил верно
Area:3000

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

Скомпилиравался но значение координаты х - не выводит.
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,093
07.04.2014, 16:30 #27
zero-11, почитайте еще http://www.sscce.org/
Иначе при такой постановке вопроса ответ Вы можете не получить.
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
07.04.2014, 16:33 #28
zero-11, отвечайте пожалуйста четко: "вот такой-то код приводит к таким-то ошибкам", иначе помочь вам затруднительно.
0
zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
07.04.2014, 16:35  [ТС] #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.
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,093
07.04.2014, 16:47 #30
Очевидно потому что объект itsUpperLeft и аналогичные инициализированы мусором.
0
07.04.2014, 16:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 16:47
Привет! Вот еще темы с ответами:

Двойное объявление класса - C++
Для чего два раза писать class Animal? class Animal; void setValue (Animal&amp;, int); class Animal { public: Animal(); ...

Объявление структуры и класса - C++
Ругается на строку obj_cls.prv=3; и на объявление класса. Что у меня не правильно? #include &lt;iostream&gt; using namespace std; ...

Предварительное объявление класса - C++
Имеется код такого вида: class IBase { public: virtual foo() = NULL; .. .. .. };

Объявление класса с шаблоном - C++
Пишу в Qt. Создал класс с шаблоном matrix.h #ifndef MATRIX_H #define MATRIX_H template &lt;class T&gt; class Matrix {


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

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

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