Typedef a map
и с использованием typedef
имя в качестве параметра возврата к функции не работает.Typedef map как возвращаемый тип функции вызывает ошибку компилятора
Ниже приведен псевдокод объясняет ситуацию:
/**
* a.h
*/
class A
{
public:
typedef std::map<string,int> Int_map;
A();
~A();
const Int_map& getMap();
private:
Int_map my_map;
}
/**
* a.cpp
*/
A::A() {}
A::~A() {}
const Int_map& A::getMap() // gives a compiler error : Int_map does not name a type
{
return my_map;
}
Однако, если я использую следующее заявление в «a.cpp», нет никакой ошибки компилятора. (Примечание: хиджры файл по-прежнему содержит объявление константных Int_map& A::getMap()
)
const std::map<string,int>& A::getMap()
Что вызывает такое поведение?
Аналогичен такое же поведение, у меня есть еще один вопрос, связанный с std::string
:
Я понимаю, что строка также ЬурейеЕ в C++ и используется шаблон. Как работают функции, возвращающие string
, в C++ и typedef map
выдает сообщение об ошибке?
Int_map -> A :: Int_map –