我有以下问题(简化版):
Interface X;
class Y : public X { ... }
class Z : public X { ... }
class A
{
map<int, X> m;
init() { X bla = new Y or Z; map.insert(...) }
}
我想在创建 A 时指定 Y 或 Z,从而根据指定的类型获得不同的功能。目前我可以“模板化”A,但这意味着我为 A 定义的每个函数都必须指定模板,即使我只需要在一种方法中使用它。另外,我使用的是 g++ 4.2.4,这意味着我无法将函数的实现与头文件分开。