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

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

Войти
Регистрация
Восстановить пароль
 
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
#1

Почему компилятор требует inline для конструктора? - C++

09.06.2014, 14:32. Просмотров 153. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Соб-сно, вопрос озвучен в теме для этого конструктора:
C++
1
2
3
4
5
6
7
8
inline Enrollee::in_choices_exc::in_choices_exc(const string& mesg, const string& pl, const int* ch)
        : runtime_error(mesg)
{
    data = unique_ptr<int []>(new int [NUM]);
    place = pl;
    for (int i = 0; i < NUM; ++i)
        data[i] = *(ch + i);
}
Ну и класс Enrollee:
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
class Enrollee {
public:
 
    enum Specs {
        NOA = 0, MT = 1, ET, POL = 50, ACC = 100, LOG
    };
    
    Enrollee();
    explicit Enrollee(const string&, int, int, int*);
    explicit Enrollee(const string&);
    explicit Enrollee(const Enrollee&);
    virtual ~Enrollee();
    
    const string Name() const { return name; }
    const int GradeMath() const { return gradeMath; }
    const int GradeUL() const { return gradeUL; }
    const int* Choices() const { return choices; }
    
    Enrollee& operator=(const Enrollee&);
    friend ostream& operator<<(ostream&, const Enrollee&);
    
    //exception classes
    class in_choices_exc : public runtime_error {
    private:
        string place;
        unique_ptr<int []> data;
    public:
        in_choices_exc(const string&, const string&, const int*);
        ~in_choices_exc();
        
        const string where() { return place; }
    };
    
private:
    string name;
    int gradeMath, gradeUL;
    enum { NUM = 3 };
    int choices[NUM];
    
    void SetName(const string& n) { name = n; }
    void SetGradeMath(const int gm) { gradeMath = gm; }
    void SetGradeUL(const int gul) { gradeUL = gul; }
    void SetChoices(const int* const);
    
 
};
Уже не первый раз с этим сталкиваюсь - прошу разъяснить, пожалуйста...

Ах, да, вот вывод g++, если без inline:
In function `Enrollee::in_choices_exc::in_choices_exc(std::string const&, std::string const&, int const*)':
/home/drew/Документы/dev/c++/try/RatingCalc/Enrollee.cpp:147: undefined reference to `vtable for Enrollee::in_choices_exc'
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/ratingcalc] Ошибка 1
make[2]: Выход из каталога `/home/drew/Документы/dev/c++/try/RatingCalc'
make[1]: *** [.build-conf] Ошибка 2
make[1]: Выход из каталога `/home/drew/Документы/dev/c++/try/RatingCalc'
make: *** [.build-impl] Ошибка 2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 14:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему компилятор требует inline для конструктора? (C++):

Почему компилятор требует константности для заданного метода? - C++
Приветствую всех! Имеется класс Fraction с перегруженными операциями сложения, вычитания, умножения и деления. Перегруженные операции...

Требует int в описании конструктора - C++
Всем доброго времени суток! Столкнулся с проблемой, написал h-файл класса startPoint#ifndef startPoint_h #define startPoint_h #include...

В каких случаях компилятор делает функции-члены класса встроенными (inline)? - C++
Добрый день! Хочу спросить следующее: в интернете пишут, что если делать реализацию методов класса внутри его объявления, то такие методы...

Компилятор требует класс, когда необходим шаблон - C++
Здравствуйте! У меня есть следующая конструкция: template&lt;typename ... Args&gt; struct ForEach; template&lt;typename T, typename...

Компилятор требует константное выражение при объявлении массива - C++
Имею некоторые проблемы. Спасибо за помощь #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;locale&gt; ...

Компилятор требует конструктор, принимающий аргументом экземпляр того же класса (не ссылку) - C++
Доброго времени суток. Проблема такова: имеется ряд нижеприведённых классов (для простоты всё, что навскидку не касается данной...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 14:32
Привет! Вот еще темы с ответами:

Почему не требует заголовочные файлы? - C++
Добрый день! В процессе изучения С++ столкнулся вот с чем. При описании функций говорится о том что необходимо подключать заголовочные...

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline? - C++
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она подошла под inline ? Как...

Почему sqrt требует тип double? - C++
Здравствуйте. Заметил, что в VS 2008 при вызове некоторых математических функций, в частности sqrt, требуется явно приводить тип к double....

inline функции vs инструкции inline функций - C++
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т....


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

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

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