Два пути. Символы (:foo
нотация) или константы (FOO
нотация).
Символы являются соответствующими, когда Вы хотите улучшить удобочитаемость, не замусорив код литеральными строками.
postal_code[:minnesota] = "MN"
postal_code[:new_york] = "NY"
Константы являются соответствующими, когда у Вас есть базовое значение, которое важно. Просто объявите, что модуль содержит Ваши константы и затем объявляет константы в этом.
module Foo
BAR = 1
BAZ = 2
BIZ = 4
end
flags = Foo::BAR | Foo::BAZ # flags = 3
Потоки не любят, когда их копируют. Самое простое решение - использовать указатель (или, лучше, интеллектуальный указатель) на поток на карте:
typedef map<string, ofstream*> mapType;
Объекты типа ofstream
не копируются, что является предварительным условием для помещения в любой контейнер стандартной библиотеки.
Оператор =
является частным для std :: ios_base
, из которого происходит ofstream
. Таким образом, вы не можете скопировать объекты foo1
и foo2
.