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

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

Войти
Регистрация
Восстановить пароль
 
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
#1

Инициализация константного статического объекта - члена класса - C++

20.03.2013, 18:40. Просмотров 939. Ответов 2
Метки нет (Все метки)

Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть private-членом класса, и не должен быть изменен никаким образом. Это объект заранее созданного исключения, я подумал что практичнее будет единожды его создать и бросать один и тот же объект всегда, когда он будет нужен, вместо того, чтобы создавать новый.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Triangle
{
 
// класс исключения
class triangle_exception: public std::exception
{
public:
    triangle_exception(const char *message = "Triangle exception"): exception(message) { }
};
 
// Класс, в котором используется исключение
class triangle
{
    double a, b, c;
    static const triangle_exception wrong_sides_ex; // Статический константный объект исключения (у меня это строка 24)
//...
};
triangle_exception triangle::wrong_sides_ex("Wrong values of sides lengths"); // Ошибка: объявление не совместимо c const Triangle::triangle_exception Triangle::triangle::wrong_sides_ex (объявлено в строке 24).
 
}
Меня смущает сообщение о том, что объект уже определен, и, вроде бы, компиллятор жалуется на то, что я второй раз его определяю. Но как тогда мне его инициализировать? Пробовал инициализировать внутри класса, но там можно инициализировать только целочисленные типы. Подскажите пожалуйста, как мне с этим справиться. Буду рад за развернутый ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 18:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инициализация константного статического объекта - члена класса (C++):

Инициализация константного члена класса с проверкой значения - C++
Допустим есть класс константным членом class a{ const int i; public: a(int ii):i(ii){}; } Можно ли как-нибудь...

Инициализация статического члена из шаблонного класса - C++
Добрый день. Есть код: template<int test> class Test { template<int a> struct Inner { static bool...

Инициализация статического члена std::vector в шаблонном классе - C++
есть класс myclass , владеющий классом struct template<class T> class myclass { struct mystruct {}; public: static...

По поводу статического члена класса и рекурсии - C++
Привет! Тут вот небольшой вопросик по поводу. Читаю книжку Страуструпа нашего и возник вопросик. ...

Инициализация константы-члена класса - C++
Все привет! Возникла такая проблема: есть double константа-член класса, объявленная в секции protected. Проблема в том, что я не знаю как...

Инициализация переменной члена класса - C++
Добрый день. Не могу никак понять, что делаю неверно при использовании переменной класса. Не понимаю как переменную необходимо...

2
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.03.2013, 18:46 #2
const triangle_exception triangle::wrong_sides_ex = bla-bla-bla
1
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
20.03.2013, 18:49  [ТС] #3
Цитата Сообщение от Vourhey Посмотреть сообщение
const triangle_exception triangle::wrong_sides_ex = bla-bla-bla
Спасибо большое, идиотский промах у меня получился с const .
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 18:49
Привет! Вот еще темы с ответами:

Инициализация static члена класса - C++
Добрый вечер! Есть класс, в нём в private реализован ещё один + это всё шаблоны. Во вложенном классе есть static указатель на переменную...

Указатель и инициализация объекта класса - C++
Здраствуйте! Имеется большой класс импортирующий данные из файлов 3D-модели. В моём приложении он будет инициализироваться один раз для...

Инициализация объекта из массива объктов класса - C++
Ребята подскажите, как создать массив объектов класса с инициализацией каждого? CLASS1* class1; //нужно к примеру 5 объектов class1...

Объявление класса, создание объекта и вызов функции-члена - C++
Всем добрый день! Вот так я объявляю класс. typedef map<string, double> datablock; typedef map<string, string> groupvars; ...


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

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

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