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

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

Восстановить пароль Регистрация
 
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
20.03.2013, 18:40     Инициализация константного статического объекта - члена класса #1
Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть 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).
 
}
Меня смущает сообщение о том, что объект уже определен, и, вроде бы, компиллятор жалуется на то, что я второй раз его определяю. Но как тогда мне его инициализировать? Пробовал инициализировать внутри класса, но там можно инициализировать только целочисленные типы. Подскажите пожалуйста, как мне с этим справиться. Буду рад за развернутый ответ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 18:40     Инициализация константного статического объекта - члена класса
Посмотрите здесь:

C++ Инициализация константы-члена класса
C++ По поводу статического члена класса и рекурсии
Инициализация статического члена std::vector в шаблонном классе C++
C++ Инициализация static члена класса
C++ Указатель и инициализация объекта класса
Инициализация константного члена класса с проверкой значения C++
Инициализация объекта из массива объктов класса C++
C++ Объявление класса, создание объекта и вызов функции-члена

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.03.2013, 18:46     Инициализация константного статического объекта - члена класса #2
const triangle_exception triangle::wrong_sides_ex = bla-bla-bla
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 .
Yandex
Объявления
20.03.2013, 18:49     Инициализация константного статического объекта - члена класса
Ответ Создать тему
Опции темы

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