C++에서 객체 공장 사전 :내가 문자열 주어진 새로운 객체를 검색 할 날 수있는 정적지도 구현해야
헤더 :
static const map<string, function<void(MyObject)>> Dictionary;
출처 :
const map<string, function<void(MyObject)>> * const ObjectDictionary = boost::assign::map_list_of
("Car", new MyCarObject())
("Ship", new MyShipObject());
을
그러나 컴파일 할 때 문제가 있습니다.
'<function-style-cast>': cannot convert from 'initializer list' to 'std::pair<const char *,MyCarObject *>'
아니요.이 공장의 사용법은 확실합니다.
어떻게 C++에서이 동작을 구현할 수 있습니까?
참고 : 문자열 주어진
public static class MyFactory
{
public static readonly Dictionary<string, Func<MyObject>> ObjectDictionary = new Dictionary<string, Func<MyObject>>()
{
["Car"] =() => new MyCarObject(),
["Ship"] =() => new MyShipObject(),
};
}
그래서 텍스트 파일을 읽을 수와 개체를 만들 수 있습니다 난 할 노력하고있어 포트에 C++로 C에서 # 내가 과거에했던 몇 가지 코드 :
var getObject = default(Func<MyObject>);
CurrentObjectDictionary.TryGetvalue(objectName, out getObject);
if(getObject != null)
{
MyObject = getObject();
//MyObject.Data = ...
//store
}
const map> 두 번째 매개 변수는 객체가 아닌 함수입니다. 반면 "Car", new MyCarObject())에는 문자열과 MyCarObject가 포함되어 있습니다. –
나는 그것을 본다 ... 명백한 실수이다. 불행히도 아직 객체를 만드는 함수를 표현하기에는 아직 지식이 부족합니다. 저를 올바른 방향으로 안내해 주시겠습니까? – Sturm
당신이해야 할 일은 typedef std :: function function_t를 만드는 것입니다. 팩토리 함수 function_t func = myfactoryfunc를 작성하십시오. 을 맵에 추가하십시오. –