template <class S>
 struct C {
     S* operator()(void* c) { return (S*)c; }
 };

我可以做到:
C<QRadioButton> caster;
void* p = ??;
caster(p)->width();

其中p是指向QRadioButton的指针,但保留为void *。

我想做的是保留一个脚轮对象的 map ,例如
map<std::string, ??> Caster;

Caster["radio"]    = C<QRadioButton>;
Caster["checkbox"] = C<QCheckBox>;

这样我就可以做到:
Caster["radio"](p)->width();

知道如何设置吗?

最佳答案

我不太确定,但是您似乎想使用Boost.Any

关于c++ - 如何制作 map ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5715034/

10-12 05:54