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

компенсатор ругается когда пытаюсь внедрить defualt and normal inline - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
16.05.2012, 13:52     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #1
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
//pointer.h
#ifndef POINTER_H
#define POINTER_H
 
class Point
 
{
    private:
      double Xcoord;
      double Ycoord;
 
   public:
      Point();
      Point(const Point &OtherPoint);
      ~Point();
      void Print()const;
      void SetXCoordinate(const double Value)  { Xcoord = Value;} ;
      void SetYCoordinate(const double Value)  { Ycoord = Value;} ;
      double GetXCoordinate() const;    
      double GetYCoordinate() const;        
      void CalculateDistance(const Point OtherPoint) const;
};  
 
inline double Point::GetXCoordinate() const {return Xcoord;}
inline double Point::GetYCoordinate() const {return Ycoord;}
 
 
#endif
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
//pointer.cpp
#include <iostream>
 
#include <math.h>
 
#include "pointer.h"
 
using namespace std;
 
 
 
Point::Point()
{
}
 
//Construct other points for calculating the points
 
Point::Point(const Point &OtherPoint)
 
{
   Xcoord = OtherPoint.Xcoord;
   Ycoord = OtherPoint.Ycoord;
}
 
 
 
//Destructor
 
Point::~Point()
{
}
 
//Assign X-coordinate the Value that is put into the main
 
void Point::SetXCoordinate(const double Value)
{
    Xcoord = Value;
}
 
//Assing Y-coordinate the Value that is put into the main
 
void Point::SetYCoordinate(const double Value)
 
{
    Ycoord = Value;
}
 
//Return X-coordinate
 
double Point::GetXCoordinate() const
 
{
return Xcoord;
}
 
//Return Y-coordinate
 
double Point::GetYCoordinate() const
 
{
return Ycoord;
}
 
//Calculates distance between two points and outputs
 
void Point::CalculateDistance(const Point OtherPoint) const
 
{
double First = Xcoord;
double Second = OtherPoint.Xcoord;
double Third = Ycoord;
double Fourth = OtherPoint.Ycoord;
double Distance = sqrt((Second - First)*(Second-First) + (Fourth - Third)*(Fourth-Third));
cout << "The distance is: " << Distance << endl;
}
 
 
//Prints the points
 
void Point::Print() const
{
 cout << "Point is: (" << Xcoord << ", " << Ycoord << ")" << endl;
}
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
//main.cpp
#include <iostream>
#include <math.h>
#include "pointer.h"
#include "Circle.h"
 
#define _USE_MATH_DEFINES 
#include <cmath> 
#include <sstream>        // for stringstream
#include <string> 
 
using namespace std;
 
int main()
 
{
// Define two things within Point class
 
Point p1;
Circle MyCircle;
 
 
 
   //randomize four points
 
   srand(33);
   int x1 = rand()%92;
   int y1 = rand()%13;
   double r = rand()%43;
 
 
 
   //Set these points into different x and y values
 
   p1.SetXCoordinate(x1);
   p1.SetYCoordinate(y1);
 
 
 
   MyCircle.SetCentral(p1);
   MyCircle.SetRadius(r);
   MyCircle.ToString();
 
   cout << endl;
   system ("pause");
 
}
Сто процентов ошибка из за inline метода если убрать то все нормально будет работать. Да кстати не запостил код с другим классом как вы можете догадаться он в принципе не нужен. Просто проблема в синтаксене внедрения inline в h файле. Скажи плиз что не так ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.05.2012, 15:21     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #2
Leeto, А ничего, что у вас в h файле есть реализация методов Get*Coordinate и в cpp?
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
16.05.2012, 16:02  [ТС]     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Leeto, А ничего, что у вас в h файле есть реализация методов Get*Coordinate и в cpp?
Координаты точки для в классе реализованы приватно. Я сначало пользуюсь функцией геткоординат чтобы установить необходимое значение потом, пользуюсь сеткоординат, чтобы получить доступ к этим данным.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.05.2012, 16:04     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #4
.h файл

C++
1
2
inline double Point::GetXCoordinate() const {return Xcoord;}
inline double Point::GetYCoordinate() const {return Ycoord;}
.cpp файл

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Return X-coordinate
 
double Point::GetXCoordinate() const
 
{
return Xcoord;
}
 
//Return Y-coordinate
 
double Point::GetYCoordinate() const
 
{
return Ycoord;
}
Уж решите, где будете реализовывать-то
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 16:07     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #5
Вам про другое говорят: у вас setters&getters реализованы и в .h, и в .cpp.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
16.05.2012, 16:34  [ТС]     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #6
Цитата Сообщение от gray_fox Посмотреть сообщение
Вам про другое говорят: у вас setters&getters реализованы и в .h, и в .cpp.
А т.е. смысл в том, что если я хочу эту функции inline то мне надо их только в h реализовывать, а в cpp надо их убрать. Я правильно понимаю ? По крайнем мере я сейчас закоментил эти функции в cpp и у меня все заработало.

Добавлено через 3 минуты
ForEveR , Carmageddon супер игрушка была !
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2012, 16:46     компенсатор ругается когда пытаюсь внедрить defualt and normal inline
Еще ссылки по теме:

C++ Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Heap corruption detected after normal block C++
Когда использовать WinAPI, а когда функции языка? C++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.05.2012, 16:46     компенсатор ругается когда пытаюсь внедрить defualt and normal inline #7
Цитата Сообщение от Leeto Посмотреть сообщение
А т.е. смысл в том, что если я хочу эту функции inline то мне надо их только в h реализовывать, а в cpp надо их убрать. Я правильно понимаю ?
Просто реализуйте в одном месте, или в h., или в cpp., inline можно приписать и в cpp. Вообще inline - это только рекомендация, в конечном счёте компилятор всё равно сам решит, что встраивать, а что - нет.
Yandex
Объявления
16.05.2012, 16:46     компенсатор ругается когда пытаюсь внедрить defualt and normal inline
Ответ Создать тему
Опции темы

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