在类定义之外移动函数

汤姆·德·吉斯

我正在尝试增强具有矩阵类的库的可读性。特别是我希望用户在查看类定义时获得直接的概览。因此,我将实际功能移到定义之外。但是,对于复制构造函数我似乎没有成功特别是我没有成功正确定义模板。

一个最小的例子(具有类定义之外的函数)如下:

#include <vector>

template<class X>
class matrix
{
private:
  std::vector<X> m_data;

public:
  matrix(){};
  matrix(size_t n);
  X& operator[](size_t i);
  size_t size();

  template<\
    typename U,typename V=X,\
    typename=typename std::enable_if<std::is_convertible<X,U>::value>::type\
  >
  operator matrix<U> ()
  {
    matrix<U> out(size());

    for ( size_t i = 0 ; i < size() ; ++i )
      out[i] = static_cast<U>( m_data[i] );

    return out;
  }

};

template<class X>
matrix<X>::matrix(size_t n)
{
  m_data.resize(n);
}

template<class X>
X& matrix<X>::operator[](size_t i)
{
  return m_data[i];
}

template<class X>
size_t matrix<X>::size()
{
  return m_data.size();
}

int main()
{
  matrix<double> A(3);

  matrix<int> B = A;
}
马西米利亚诺·简斯

假设您的问题涉及转换运算符模板(您在那里只有隐式复制构造函数),移出成员模板的语法需要指定两个模板参数(类优先,没有默认值),因此:

template<class X>
template<typename U,typename V,typename E>
matrix<X>::operator matrix<U> ()
{
  //...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使默认构造函数在noexcept类之外定义?

来自分类Dev

使用纯虚函数定义在C ++类之外?

来自分类Dev

C ++-在模板类之外但在标头中定义成员函数

来自分类Dev

从Python类之外的函数引用已定义的变量

来自分类Dev

类定义之外的Python函数分配导致参数异常

来自分类Dev

从类定义之外调用React函数PropType

来自分类Dev

在模板化类之外定义非模板函数

来自分类Dev

使用纯虚函数在C ++类之外定义?

来自分类Dev

在类声明之外定义函数体未编译

来自分类Dev

在类之外覆盖函数

来自分类Dev

在类体之外定义函数时,c ++派生的构造函数-“无默认构造函数”

来自分类Dev

在类定义之外的模板类成员函数主体中,何时需要模板参数?

来自分类Dev

如何在类模板之外定义类模板的构造函数模板?

来自分类Dev

如何在另一个文件的类之外定义类构造函数?

来自分类Dev

如何在类模板之外定义类模板的构造函数模板?

来自分类Dev

如何在完全专门的模板类的定义之外定义模板成员函数?

来自分类Dev

如何在完全专门的模板类的定义之外定义模板成员函数?

来自分类Dev

在类定义和静态数据的使用之外定义私有成员函数

来自分类Dev

类定义之外的变量赋值

来自分类Dev

类之外的函数是什么?

来自分类Dev

类定义之外的类的新方法

来自分类Dev

PHP-类之外的类调用函数

来自分类Dev

PHP-类之外的类调用函数

来自分类Dev

在泛型类之外定义函数会产生编译错误

来自分类Dev

我可以在Scala的类和对象之外定义和使用函数吗?

来自分类Dev

在模板类之外定义友元函数的正确方法是什么?

来自分类Dev

在类定义之外为模板类定义operator []()(数组订阅)

来自分类Dev

不允许在类定义之外的朋友

来自分类Dev

模板类之外的长定义的替代方法

Related 相关文章

  1. 1

    如何使默认构造函数在noexcept类之外定义?

  2. 2

    使用纯虚函数定义在C ++类之外?

  3. 3

    C ++-在模板类之外但在标头中定义成员函数

  4. 4

    从Python类之外的函数引用已定义的变量

  5. 5

    类定义之外的Python函数分配导致参数异常

  6. 6

    从类定义之外调用React函数PropType

  7. 7

    在模板化类之外定义非模板函数

  8. 8

    使用纯虚函数在C ++类之外定义?

  9. 9

    在类声明之外定义函数体未编译

  10. 10

    在类之外覆盖函数

  11. 11

    在类体之外定义函数时,c ++派生的构造函数-“无默认构造函数”

  12. 12

    在类定义之外的模板类成员函数主体中,何时需要模板参数?

  13. 13

    如何在类模板之外定义类模板的构造函数模板?

  14. 14

    如何在另一个文件的类之外定义类构造函数?

  15. 15

    如何在类模板之外定义类模板的构造函数模板?

  16. 16

    如何在完全专门的模板类的定义之外定义模板成员函数?

  17. 17

    如何在完全专门的模板类的定义之外定义模板成员函数?

  18. 18

    在类定义和静态数据的使用之外定义私有成员函数

  19. 19

    类定义之外的变量赋值

  20. 20

    类之外的函数是什么?

  21. 21

    类定义之外的类的新方法

  22. 22

    PHP-类之外的类调用函数

  23. 23

    PHP-类之外的类调用函数

  24. 24

    在泛型类之外定义函数会产生编译错误

  25. 25

    我可以在Scala的类和对象之外定义和使用函数吗?

  26. 26

    在模板类之外定义友元函数的正确方法是什么?

  27. 27

    在类定义之外为模板类定义operator []()(数组订阅)

  28. 28

    不允许在类定义之外的朋友

  29. 29

    模板类之外的长定义的替代方法

热门标签

归档