gpt4 book ai didi

c++ - 模板类复制构造函数

转载 作者:行者123 更新时间:2023-11-28 00:08:17 31 4
gpt4 key购买 nike

我想为模板类编写复制构造函数。我有这个类:

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<16>”作为“int Word::getSize() [with int C = 16]”的“this”参数传递会丢弃限定符[- f宽容] - 无效参数 ' 候选者是:int getSize() '"

这有什么问题吗?谢谢

最佳答案

我会这样写类:

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
};

注意:

  • 不需要动态大小,因为它是类型的一部分。

  • 不需要特殊的成员函数,因为隐式定义的成员函数就可以了。

  • 通过构造函数初始化列表将成员数组初始化为零。

  • 模板参数是无符号的,因为它代表一个计数。

关于c++ - 模板类复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310754/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com