Автор: Litkevich Yuriy 6.5.2008, 11:10
есть класс Foo
мы можем в нем определить интовые константы, например так:
enum myintconst {ONE=1, TWO}
и потом обращатся к ним из других мест так:
Foo::ONE
А как сделать строковые константы, например:
MY_WORD_1 = "word1"
MY_WORD_2 = "word2"
чтобы к ним можно было обращаться в том же стиле, т.е.:
Foo::MY_WORD_2
вроде просто константы в классе нельзя определить, т.е. так:
const QString MY_WORD_1 = "word1"
подскажите как быть
Автор: ViGOur 6.5.2008, 11:15
Можно так:
#define MY_WORD_1 word1
#define MY_WORD_2 word2
Цитата(Litkevich Yuriy @ 6.5.2008, 12:10)
вроде просто константы в классе нельзя определить, т.е. так:
Константные можно определять в классе, они определяются также как и статические.
Автор: Litkevich Yuriy 6.5.2008, 11:22
Цитата(ViGOur @ 6.5.2008, 15:15)
Можно так:
#define MY_WORD_1 word1
#define MY_WORD_2 word2
с дефайнами неудобно, их за именем класса не спрятать,
Цитата(ViGOur @ 6.5.2008, 15:15)
Константные можно определять в классе, они определяются также как и статические.
т.е. так:
в заголовочном:
const QString MY_WORD_1;
а в файле реализации:
QString Session::MY_WORD_1 = "word1"
или нет?
Автор: Tonal 6.5.2008, 11:26
static const QString MY_WORD_1;
Автор: Litkevich Yuriy 6.5.2008, 11:36
а инициализировать так как я написал?
Автор: Litkevich Yuriy 6.5.2008, 11:54
тоже const надо приписать, а то компилер говорит, не совпадает обявление с определением:
const QString Session::MY_WORD_1 = "word1"
Автор: Andrew Selivanov 6.5.2008, 12:14
//=== whatever.hpp ===
namespace blah
{
const char* const SOME_CONSTANT = "test";
}
//=== whatever.cpp ===
#include "whatever.hpp"
f()
{
std::string str = blah::SOME_CONSTANT;
}
Автор: AD 6.5.2008, 12:14
Цитата(Litkevich Yuriy @ 6.5.2008, 12:54)
тоже const надо приписать, а то компилер говорит, не совпадает обявление с определением:
const QString Session::MY_WORD_1 = "word1"
Константные члены можно ведь инициализировать и в конструкторе класса.
Разве нет?
Автор: Andrew Selivanov 6.5.2008, 12:30
Цитата(AD @ 6.5.2008, 13:14)
Константные члены можно ведь инициализировать и в конструкторе класса.
Разве нет?
1) Более того их
нужно инициализировать в конструкторе класса, иначе будет айяйяй
2) Не забывай, что он еще и
static