에 클래스를 삽입 할 때 나는지도 variables.insert(make_pair("foo", new Int(10)))
에 데이터를 삽입하려고하지만, 나는 다음과 같은 오류를 얻고있다 :C는 + + - 오류가 난 그렇게 <code>map<string, unique_ptr<Base>> variables</code> 같은지도가지도
error: no matching function for call to ‘std::map<std::__cxx11::basic_string<char>, std::unique_ptr<Base>>::insert(std::pair<const char*, Int*>)’ variables.insert(make_pair("test", new Int(10)));
error: no type named ‘type’ in ‘struct std::enable_if<false, void>’ template<typename _Pair, typename = typename
class Base {
public:
Base() {};
virtual ~Base() {};
};
class Int : public Base {
public:
Int(int i) {
this->i = i;
}
Int operator=(int i) {
this->i = i;
}
int i;
};
void set() {
map<string, unique_ptr<Base>> variables;
variables.insert(make_pair("test", new Int(10)));
}
:
이 내 코드입니다 이 문제가 무엇인지 잘 모르겠습니다. 감사합니다.
나는 이종지도를 만들기 위해 노력하고있어 각 데이터 유형에 대한 클래스가있다
편집. 하지만 얼마나 많은 사람들이 있더라도 여전히 같은 오류가 발생합니다.
게시물 [MCVE]하시기 바랍니다. 함수 본문 외부의 문은 유효하지 않은 구문입니다. –
'static_cast <>'도 도움이 될 수 있습니다. –
코드에서 이러한 오류가 발생하지 않습니다. http://coliru.stacked-crooked.com/a/893f119bceb7514d – aschepler