我试图在地图中存储一组std :: function(在GCC 4.5下)
我想得到两种东西:
我想我用类Command和Manager实现了第一个:
class Command
{
std::function<void()> f_;
public:
Command() {}
Command(std::function<void()> f) : f_(f) {}
void execute() { if(f_) f_(); }
};
class CommandManager
{
typedef map<string, Command*> FMap;
public :
void add(string name, Command* cmd)
{
fmap1.insert(pair<string, Command*>(name, cmd));
}
void execute(string name)
{
FMap::const_iterator it = fmap1.find(name);
if(it != fmap1.end())
{
Command* c = it->second;
c->execute();
}
}
private :
FMap fmap1;
};
Run Code Online (Sandbox Code Playgroud)
可以像这样使用:
class Print{
public:
void print1(string s, …Run Code Online (Sandbox Code Playgroud)