У меня есть следующий код:
//MyClass.h
class MyClass {
typedef std::map<std::string, int> OpMap;
static const OpMap::value_type opMap[OP_COUNT];
public:
//methods
};
//MyClass.cpp
const MyClass ::OpMap::value_type opMap[DDG::OP_COUNT] = {
MyClass ::OpMap::value_type("hello", 42),
MyClass ::OpMap::value_type("world", 88),
};
Компиляция приведенного выше кода не удалась.
Только если я сделаю typdef общедоступным, это нормально.
Можете ли вы объяснить, почему typedef
должен быть публичным в этом случае
Линия
const DDG::OpMap::value_type opMap[DDG::OP_COUNT] = {
должно быть
const DDG::OpMap::value_type MyClass::opMap[DDG::OP_COUNT] = {
Других решений пока нет …