【发布时间】:2014-08-20 23:08:57
【问题描述】:
我的类的构造函数可以有两个不同的类传递给它。但是我无法提前知道它将是什么类型,因此我可以将其类型声明为数据成员以对其进行初始化。我如何知道将哪种对象传递给我的构造函数。最好我希望这样做没有 Boost。
我正在传递一个迭代器。它可以是 const 迭代器 (v.cbegin()) 或非常量 (v.begin()):
struct iterator
{
iterator(IteratorType it)
: m_it(it)
{ }
IteratorType m_it;
};
这是我调用构造函数的方式:
iterator X::begin() { return iterator(x.begin()); }
iterator X::begin() const { return iterator(x.cbegin()); }
【问题讨论】:
-
如果你不知道你会得到什么类型,你能用这些数据做什么?
-
你能用模板吗? (假设两个类都有一个兼容的接口。)
-
@user3577210 您能否在问题中提供更多信息?
-
如果它可以有两个不同的类传递给它,只需编写两个重载,这可能会委托给一个公共 ctor。无需过度设计。
-
你为什么想知道?这取决于什么?当然你知道传递给你的函数的类型,所有参数都有一个类型。