Проблема типа при включении кортежа
Я использую Visual Studio 2008 с Feature Pack 1.
У меня есть typedef, как это typedef std::tr1::tuple<std::string, std::string, int> tileInfo
с такой функцией const tileInfo& GetTile( int x, int y ) const
,
В файле реализации функция имеет точно такую же подпись (с добавленным квалификатором имени класса), и я получаю redefinition: different type modifiers
ошибка. Кажется, ищет int&
вместо tileInfo&
Когда я наведите курсор мыши на тип функции в заголовке, т.е. tileInfo&
это поднимает маленькую барную поговорку static const int tileInfo
, Я думаю, что это может быть проблемой, но я не уверен, что делать. Это заставляет меня поверить, что компилятор думает std::tr1::tuple<std::string, std::string, int>
это static const int
,
Любая помощь приветствуется, спасибо.
PS Вот пример, имитирующий ту же ситуацию, просто сжатый до минимума.
#include <tuple>
class Blah {
public:
typedef std::tr1::tuple<std::string, std::string, int> tileInfo;
tileInfo& GetTile( int x, int y ); // When you mouse over tileInfo in this line, it says static const int
...
};
2 ответа
Кажется, что при использовании typedef в качестве возвращаемого типа или локальной переменной, даже внутри класса, мне пришлось также квалифицировать его с помощью имени класса. Например, GetTile
подпись в шапке должна была быть TileMap::tileInfo& GetTile( int x, int y );
Я думал, что вам не нужно делать это, когда функция находится в классе с typedef.
Убедитесь, что вы включили заголовочный файл с typedef
,
Похоже, компилятор не может видеть typedef
так тип tileInfo
по умолчанию int
,