I defined a class as follow.
class Camera
{
public:
explicit Camera(const CameraParams& camera_params);
DataFrame capture();
private:
std::unique_ptr<CameraInterface> ptr_;
bool get_color_;
bool get_depth_;
bool get_normals_;
bool get_point_cloud_;
};
I want to add it to a map. So I did following.
std::map<std::string, Camera> cameras_;
for (auto& camera_params : params.camera_params_vec)
{
cameras_[camera_params.name] = Camera(camera_params);
}
There are two problems with this code. (1) No default constructor, so compile failed. But I don't want to defined a meaningless default constructor just for adding to map. (2) Camera class includes a unique pointer. I don't know how to move it to map correctly.
What is a good practice to solve this kind of problem?