Я хочу объявить строковые константы, которые будут использоваться для разных классов в проекте. Я рассматриваю две альтернативы
Вариант 1:
#header file
class constants{
static const string const1;
};
#cpp file
const string constants::const1="blah";
Вариант 2:
#header file
namespace constants{
static const string const1="blah";
};
Просто интересно, что было бы лучше.
Уже посмотрел
Где хранить определенные именованные константы класса в С++
Где помещать постоянные строки в С++: статические члены класса или анонимные пространства имен
UPDATE:
Вариант 3:
На основе предложений от "potatoswatter" и "sellibitze" у меня есть следующая реализация?
#header file
namespace constants{
extern const string& const1(); //WORKS WITHOUT THE EXTERN ***WHY***
};
#cpp file
namespace constants{
const string& const1(){static string* str = new string ("blah"); return *str;}
}
Я включаю заголовочный файл, где мне нужно использовать константы. Существуют ли какие-либо серьезные недостатки этой реализации?