我想为模板类编写复制构造函数。我有这门课:
template<int C>
class Word {
array<int, C> bitCells; //init with zeros
int size;
public:
//constructor fill with zeros
Word<C>() {
//bitCells = new array<int,C>;
for (int i = 0; i < C; i++) {
bitCells[i] = 0;
}
size = C;
}
Word<C>(const Word<C>& copyObg) {
size=copyObg.getSize();
bitCells=copyObg.bitCells;
}
}
我有复制构造函数的错误,在使用大小的行上,我得到: “这条线上有多个标记 - 传递'const Word&lt; 16&gt;'作为'int Word :: getSize()[with int C = 16]的'this'参数'丢弃限定符[ - fpermissive] - 无效的参数'候选者是:int getSize()'“
这有什么问题? 谢谢
答案 0 :(得分:3)
我会写这样的课:
template <std::size_t N>
class Word
{
std::array<int, N> bit_cells_;
public:
static constexpr std::size_t size = N;
Word() : bit_cells_{} {}
// public functions
};
注意:
不需要动态尺寸,因为它是该类型的一部分。
不需要特殊的成员函数,因为隐式定义的函数很好。
通过constructor-initializer-list将成员数组初始化为零。
模板参数是无符号的,因为它代表一个计数。
答案 1 :(得分:0)
错误的是您的getSize()
未被声明const
。这样做:
int getSize() const { return size; }