С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 179
1

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

14.12.2013, 19:37. Просмотров 250. Ответов 6
Метки нет (Все метки)

Необходимо, чтобы при задании планеты (сферы) высчитывался гравитационный параметр, желательно в конструкторе. Данный код не компилируется, выдаются ошибки 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;
}
Подскажите, пожалуйста, что не так!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 19:37
Ответы с готовыми решениями:

Конструктор класса не видит конструктор по умолчанию другого класса
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса...

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) {...

Конструктор производного класса требует конструктор предка
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' ...

Вызвать конструктор производного класса без конструктора базового класса
Здравствуйте! У меня есть базовый класс треугольник и производный класс...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Привести пример класса с конструктором и деструктором, созданием экземпляра...

6
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
14.12.2013, 19:45 2
Цитата Сообщение от TyLinka Посмотреть сообщение
выдаются ошибки LNK2028, LNK2019 и LNK1120.
очень интересные сообщения об ошибках. что же они означают?
0
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 179
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;
}
0
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
14.12.2013, 19:58 4
TyLinka, не хватает функций p.init_sphere() и p.get_PI()

у них только прототипы есть внутри класса. больше ничего
1
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 179
14.12.2013, 20:14  [ТС] 5
Спасибо, идиотская ошибка
0
kravam
быдлокодер
1710 / 897 / 105
Регистрация: 04.06.2008
Сообщений: 5,556
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() и всё будет круто
0
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 179
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;
не выдавал никаких претензий
0
15.12.2013, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 08:58

Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка
Создать конструктор копий и оператор присваивания для класса компьютер и члена...

В конструктор класса передать объект этого класса
Вопрос на засыпку :) Как в конструктор класса передать объект этого класса?...

Конструктор класса не дает инициализировать переменную класса
Привет. Вот такой вот класс. Когда пытаюсь в конструкторе присвоить name и...


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

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

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