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

Конструктор класса - C++

Восстановить пароль Регистрация
 
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
14.12.2013, 19:37     Конструктор класса #1
Необходимо, чтобы при задании планеты (сферы) высчитывался гравитационный параметр, желательно в конструкторе. Данный код не компилируется, выдаются ошибки LNK2028, LNK2019 и LNK1120.

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
class sphere
{
protected:
    double M; // масса 
    double R;
    const double PI = 3.14159265358979323846; // число пи
public:
    void init_sphere(double m, double r);
    double get_M();
    double get_R();
    double get_PI();
};
class planet : public sphere
{
private:
    const double G = 6.67384e-11;
    double K; // гравитационный параметр
public:
    planet();
    double get_G();
    double get_K();
};
planet::planet()
{
    K = G*M;
}
Подскажите, пожалуйста, что не так!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.12.2013, 19:45     Конструктор класса #2
Цитата Сообщение от TyLinka Посмотреть сообщение
выдаются ошибки LNK2028, LNK2019 и LNK1120.
очень интересные сообщения об ошибках. что же они означают?
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
14.12.2013, 19:50  [ТС]     Конструктор класса #3
Проблемы с кодировкой, могу только догадываться...
Но я заметила, что если конструктор описывать внутри класса, то всё нормально.
Но, во-первых, мне надо, чтобы он был описан вне класса,
а во-вторых, даже если описать его внутри класса, а потом попробовать вывести значение K с помощью get_K, то будут аналогичные ошибки
Я банально даже не могу вот это скомпилировать, с вышеизложенными классами:
C++
1
2
3
4
5
6
7
8
int main()
{
    planet p;
    p.init_sphere(6e24, 6300e3);
    cout << p.get_PI() << endl;
    system("pause");
    return 0;
}
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.12.2013, 19:58     Конструктор класса #4
TyLinka, не хватает функций p.init_sphere() и p.get_PI()

у них только прототипы есть внутри класса. больше ничего
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
14.12.2013, 20:14  [ТС]     Конструктор класса #5
Спасибо, идиотская ошибка
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,269
14.12.2013, 20:29     Конструктор класса #6
TyLinka, при чём тут конструкторы? Разбирайся последовательно. Мой компилятор говорит, что в классе нельзя так объявлять поля, как у тебя определены.

C++
1
2
const double PI = 3.14159265358979323846; 
const double G = 6.67384e-11;
А надо так (два варианта инициализации полей класса минуя конструктор)


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
#include <iostream>
#include <windows.h>
using namespace std;
 
 
class sphere
{
protected:
    double M; // масса 
    double R;
    static double PI; // число пи
public:
    void init_sphere(double m, double r);
    double get_M();
    double get_R();
    double get_PI();
};
 
///////////////////////////////////////
 
class planet : public sphere
{
private:
    static const double G = 6.67384e-11;
    double K; // гравитационный параметр
public:
    planet();
    double get_G();
    double get_K();
};
 
planet::planet()
{
    K = G*M;
}
 
///////////////////////////////////////
 
double sphere::PI = 3.14159265358979323846;
 
///////////////////////////////////////
 
int main()
{
    planet p;
    //p.init_sphere(6e24, 6300e3);
    //cout << p.get_PI() << endl;
    system("pause");
    return 0;
}
Теперь добавь определения функций init_sphere() и get_PI() и всё будет круто
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 08:58     Конструктор класса
Еще ссылки по теме:

C++ Конструктор класса
Конструктор класса C++
Конструктор класса C++

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

Или воспользуйтесь поиском по форуму:
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
15.12.2013, 08:58  [ТС]     Конструктор класса #7
А какой у вас компилятор?
VS ругается на это:
C++
1
static const double G = 6.67384e-11;
static нецелочисленный у меня только вне класса норм инициализируется

А к
C++
1
2
const double PI = 3.14159265358979323846; 
const double G = 6.67384e-11;
не выдавал никаких претензий
Yandex
Объявления
15.12.2013, 08:58     Конструктор класса
Ответ Создать тему
Опции темы

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