에서 값을 설정할 수 없습니다. 특정베이스 클래스를 MQTT 항목에 연결하기 위해이 게시물의 제목에 표시된대로 맵을 만들려고합니다. 제목.std :: map <std :: string, std :: shared_ptr <class>>
원시 (C 스타일) 포인터로 작업하고 있지만 학교에서 배운 스마트 포인터는 더 나은 디자인 옵션입니다.
지도를 인스턴스화 할 때 문제가 발생하지 않지만 데이터를 할당하려고 할 때 발생합니다.
나는 그것이 완벽하게 작동있어 한 방법은 다음과 같습니다
이 코드 "센서"에서std::map<std::string,sensors*> factory;
factory["sensorTwo"]= new sensor1;
이 센서 1의의 base class입니다;
나는 이런 식으로 작업을 수행 할 때 :
컴파일러 전에 기본 표현을 요구std::map<std::string,std::shared_ptr<sensors>> factory;
factory["sensorOne"]= std::make_shared<sensors> (sensor1);
';' 두 번째 줄에. 첫 번째 예제의 할당은 shared_ptr에서 분명히 작동하지 않지만 아무에게도이를 수행하는 방법에 대한 아이디어가 있습니까?
주요 외모를 다음과 같이
이#include <string>
#include <memory>
#include <map>
#include "sensors.h"
#include "sensor1.h"
#include "sensor2.h"
int main()
{
//std::map<std::string,sensors*> factory;
std::map<std::string,std::shared_ptr<sensors>> factory;
factory["sensorOne"]= std::make_shared<sensor1>();
return 0;
}
[재생할 수 없음] (http://coliru.stacked-crooked.com/a/5a3e115f04392bc2). [mcve]를 입력하십시오. – NathanOliver
세 개의'* .h' 파일에 무엇이 들어 있는지 모르는 경우'main'을 보는 것이별로 도움이되지 않습니다. –
MQTT는 설명 할 수 없습니다. 쓸데없는 (그래서 삭제되어야한다), 또는 설명이 필요하다. – Yakk