0
Typedef a map
並使用typedef
名稱作爲函數的返回參數失敗。Typedef映射作爲函數的返回類型拋出編譯器錯誤
下面是一個僞代碼解釋場景:
/**
* 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」,沒有編譯器錯誤。 (注:A.H文件仍然包含聲明爲const Int_map& A::getMap()
)
const std::map<string,int>& A::getMap()
是什麼原因導致這種行爲?
類似於相同的行爲,我有相關的std::string
另一個問題:
據我所知,字符串也是一個typedef在C++和使用的模板。 函數返回string
如何在C++和typedef map
中引發錯誤?
Int_map - > A :: Int_map –