【发布时间】:2012-10-18 01:02:03
【问题描述】:
在 C++ 中有没有办法将类型(例如类)作为参数传递给函数?
解释为什么我需要这个:有一个抽象的data 类和一个manager 类。 manager 类包含data 的派生类的对象列表(或在本例中为映射)。如this question 的回答中所述,我为此使用unique_ptr。
class Data{}; // abstract
class Manager
{
map<string, unique_ptr<Data>> List;
};
现在假设我想向管理器添加一个新的data 存储。
class Position : public Data
{
int X;
int Y;
}
我如何告诉经理创建该类型的对象并将unique_ptr 引用给它?
Manager manager;
manager.Add("position data", Position);
在这种情况下,我需要将类 Position 传递给管理器类的 add 函数,因为我不想先创建实例然后将其发送给管理器。
然后,如何将该类的对象添加到List?
我不确定在 C++ 中是否有办法做到这一点。如果这不能轻松完成,我真的很想看到一个解决方法。非常感谢!
【问题讨论】:
-
您是否尝试过使用模板?
-
没有,因为我不熟悉使用模板。但我对使用它们和更多地了解它们持开放态度。
-
我认为下面的答案提供了很好的模板解决方案。
标签: c++ class function types parameters