将函数移到类定义之外
Move function outside class definition
我正在尝试增强具有矩阵类的库的可读性。特别是,我希望用户在查看类定义时能够直接了解情况。因此,我将实际函数移到定义之外。但是,我似乎对复制构造函数不成功。特别是我没有成功正确定义模板。
一个最小的示例(具有类定义之外的函数(如下:
#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> ()
{
//...
相关文章:
- 在命名空间中定义函数还是限定函数
- 为什么在定义函数之前先声明它
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 这个c++代码是如何在没有定义函数的情况下运行的
- 具有外部"c"和程序集的未定义函数
- 已定义函数时出现 G++ "未定义的引用"错误
- 将自定义函数传递到基抽象类中以延迟执行
- C++使用 rand 定义函数语法
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 将具有固定签名的自定义函数名称注入 CRTP
- 使用定义函数模板别名
- 是否可以使用单个定义定义函数的常量和常规版本?(使用模板,自动,decltype等)
- 在内联程序集中定义函数和从 C++ 调用时出现问题
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 声明和定义函数静态会产生"undefined reference to function_name()"
- 朋友定义函数的名称空间是什么
- 介子 对用户定义函数的未定义引用
- 如何使用 "using" 关键字定义函数原型/签名
- 在 C 结构中定义C++函数