[英]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)
構造函數的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.