加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何提供许多构造函数,但没有太多依赖项?

发布时间:2020-12-16 10:27:13 所属栏目:百科 来源:网络整理
导读:这是一个非常基本的C设计问题: 一旦构造了对象,我有一个包含一些只读数据的类: class Foo {private: class Impl; Impl* impl_; public: int get(int i); // access internal data elements}; 现在,我想实现几种方法来构造一个Foo对象并用数据填充它:来自s
这是一个非常基本的C设计问题:

一旦构造了对象,我有一个包含一些只读数据的类:

class Foo {
private:
  class Impl;
  Impl* impl_;  
public:
  int get(int i); // access internal data elements
};

现在,我想实现几种方法来构造一个Foo对象并用数据填充它:来自std :: istream,来自迭代器,向量等.实现它的最佳方法是什么?

我可以直接在Foo中添加所有这些构造函数,但我真的不希望Foo用户必须包含std :: istream等.我也担心包含太多代码的类.

最常用的方法是什么?我想,添加一些私有的addElement函数,然后定义通过读取数据创建Foo对象的友元工厂函数,调用addElement并返回构造的对象?还有其他选择吗?

解决方法

如果你想从一个范围构造一些东西,也许:

class X
{
public:
    template <class InputIterator>
    X(InputIterator first,InputIterator last);
};

用法:

//from array
X a(array,array + array_size);

//from vector
X b(vec.begin(),vec.end());

//from stream
X c((std::istream_iterator<Y>(std::cin)),std::istream_iterator<Y>());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读