使用地图存储没有复制构造函数的类型

使用map存储没有复制构造函数的类型
使用TrackMonit类通过串口控制单个仪器,它的成员函数MonitThread会当作线程运行。
另一个类TrackManage使用map保存多个TrackMonit,管理所有的TrackMonit实例。
因为TrackMonit有个成员函数作为线程运行,除了TrackManage以外,不想允许TrackMonit的构造函数在其他地方被调用,也完全不想调用这个类型的复制构造函数,所以我开始只给它声明了一个private的构造函数。但是map又需要public的构造函数才行,就给改成了public,还需要一个复制构造函数,于是又给他添加了一个空的复制构造函数。
我有两个问题,首先是这个空的复制构造函数会不会带来什么其他的问题。然后有没有什么办法能实现这种功能,使用map保存一个只有私有构造函数的类型似乎是行不通的,我能想到的也就是添加一个TrackMonit类型的动态数组了,也还是很麻烦。

我的头文件大概是这个样子的

#ifndef GUARD_TRACK_MONIT
#define GUARD_TRACK_MONIT

#include "Survey.h"
#include <string>
#include <map>
#include <vector>
#include <boost/thread.hpp>
#include <boost/function.hpp>

typedef boost::function<void (std::string, int)> ProgressCallback;

//manage single instrument
class TrackMonit
{
friend class TrackManage;

public:   //I want the constructor to be private
TrackMonit() : m_bIdle(true) {};
TrackMonit(TrackMonit const& monit) { return; } // empty copy constructor

private:
Survey::pCommType m_pComm;

boost::recursive_mutex m_mtx;
Survey::Station m_sta;
std::vector<CPointT> m_vecTar;
std::map<std::string, Survey::Coord> m_mapCtrlCoord;
std::map<std::string, Survey::Coord> m_mapMonitCoord;
ProgressCallback m_progressCallback;
bool m_bStop;
bool m_bIdle;

void start();
void stop();
bool isIdle();
void init(Survey::pCommType, Survey::Station, std::vector<CPointT> const&,
ProgressCallback);

void MonitThread();
};


//manage multi 'TrackMonit'
typedef std::map<std::string, TrackMonit> MapMonit;
class TrackManage
{
public:
void start();
void stop();

void init(MapInstruPoint const&);

private:
MapMonit m_mapMonit;
};

#endif

------解决思路----------------------
可以试试加 move ctor,或者就用指针。