我正在使用單例設計模式(我無法使用複製構造函數)。在地圖中插入std :: string和共享指針對象
我有一個:
- Obj.hpp和Obj.cpp文件
- House.hpp和House.cpp文件
obj的類包含地圖房子,在那裏我可以使用字符串搜索房子。 我甚至不能編譯我Obj.cpp文件,不知道爲什麼... :(
的錯誤是:
錯誤C2676:二進制「<」:「常量性病::字符串」不定義這種 操作或轉換到類型接受的預定義的操作者
[Obj.hpp文件]
#include "house.hpp"
class Obj
{
public:
Obj();
virtual ~Obj();
private:
Obj(const Obj& copy);
Obj& operator=(const Obj& assign);
typedef std::map<const std::string, std::shared_ptr<House> > myHouseMap;
myHouseMap _myHouseMap;
void InitObj();
}
[Obj.cpp文件]
#include <map.h>
#include <string.h>
#include "Obj.hpp"
Obj::Obj()
{
InitObj();
}
void Obj::InitObj()
{
/* ERROR ON THIS LINE BELLOW */
_myHouseMap.insert(std::pair<const std::string, std::shared_ptr<House>>("apartment", new House("apartment")));
}
[House.hpp文件]
class House
{
public:
House(const char* name);
virtual ~House();
private:
House(const House& copy);
House& operator=(const House& assign);
};
該行看起來很好,除非你的編譯器不是100%C++ 11,在這種情況下,它可能需要兩個>>之間的空格。 – Eelke
哦,你的包括應該是
你的密鑰類型不應該是'const'。 –