当前位置:  开发笔记 > 编程语言 > 正文

C++有scala-like mixins吗?

如何解决《C++有scala-likemixins吗?》经验,为你挑选了1个好方法。

Scala Mixins



1> Logan Capald..:

不,但它可以使用模板进行不同程度的伪造:

template 
class RichIterator : public AbsIterator {
public:
   template
   void foreach(FuncType f) { while( hasNext() ) f( next() ); }
};

class StringIterator {
  std::string m_s;
  int i;
public:
  typedef char T;
  StringIterator() : m_s(), i(0) {} // Unfortunately need this, or 
                                    // else RichIterator
                                    // gets way more complicated
  StringIterator(const std::string &s) : m_s(s), i(0) {}
  void swap(StringIterator& other) {
     m_s.swap(other.m_s);
     std::swap(i, other.i);
  }
  void reset_str(const std::string& s) {
     StringIterator(s).swap(*this);
  }
  bool hasNext() { return i < m_s.length(); }
  char next() { return m_s[i++]; }
};

template
void println(const Outputable& o) {
   std::cout << o << std::endl;
}

int main(int argc, char **argv) {
  typedef RichIterator Iter;
  Iter iter;
  iter.reset_str(argv[1]);
  iter.foreach(&println);
}

说实话,我还没有通过编译来测试它,但你应该明白这个想法.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有