C++模板类中的非法成员初始化
C++ illegal member initialization in template class
我已经查看了一些关于 C++ 中非法成员初始化的类似问题,错误 C2614,但这似乎与我的问题不同。
我有一个模板类"Mat2D":
#pragma once
#include <iostream>
#include <iomanip>
#include <assert.h>
template<class T>
class Mat2D
{
private:
int _rows;
int _cols;
T** _data;
public:
Mat2D()
:_rows(0), _cols(0), _data(NULL)
{
}
Mat2D(const Mat2D<T>& rhs)
:_rows(rhs._rows), _cols(rhs._cols)
{
cloneData(rhs._data);
}
Mat2D(int rows, int cols)
{
_rows = rows < 1 ? 1 : rows;
_cols = cols < 1 ? 1 : cols;
allocateData();
}
Mat2D(int rows, int cols, const T& initValue)
:Mat2D(rows, cols) //--> error C2614: 'Mat2D<T>' : illegal member initialization: 'Mat2D<int>' is not a base or member
{
all(initValue);
}
~Mat2D()
{
for(int i = 0; i < _rows; i++)
delete _data[i];
delete _data;
}
//...
};
Mat2D(int rows, int cols, const T& initValue)
:Mat2D(rows, cols)
这可能不起作用,因为初始化列表仅适用于变量。尝试使用
Mat2D(int rows, int cols, const T& initValue)
:_rows(rows), _cols(cols)
或在此函数中复制 Mat2D(int cols, int rows)
构造函数的内容。
相关文章:
- WinLamb 错误:成员初始化非法
- 调用模板类成员时非法使用此类型作为表达式
- 结构内部的结构:"对非静态成员的非法引用"错误
- C2276 '&':对绑定成员函数表达式的非法操作
- C++模板类中的非法成员初始化
- C2621:非法工会成员.(c++)
- 非法调用非静态成员函数
- C2597 非法引用非静态成员
- '&' :对绑定成员函数表达式的非法操作
- 为什么 如果类的成员是引用,则复制对象是非法的
- 错误 C2614:'ChildClass':非法成员初始化:'var1'不是基或成员
- C++错误 C2352:'CSchedulerDlg::Select':非法调用非静态成员函数
- 数据库.错误C2352:非法调用非静态成员函数
- 非法调用非静态成员函数
- 非法引用非静态成员或未解析的外部符号
- "&":对绑定成员函数表达式的非法操作。从关键点矢量 OpenCV 获取容量
- 指向非法引用的成员的指针
- 在私有成员函数中非法引用非静态成员
- C++ 代码错误(非法成员初始化、'class'类型重定义、'return':无法转换)
- "!"绑定成员函数表达式的非法操作