我刚开始使用模板和 C++。
我想在另一个类中添加一个私有(private)模板类。
我想添加这个类:
标题:
template <class type>
class BufferedDatenKonsistenz {
public:
BufferedDatenKonsistenz(type* buffer0, type* buffer1, type* buffer2);
BufferedDatenKonsistenz(type* buffer0, type* buffer1);
//some methods
private:
const int16_t numberOfBuffers;
type* buffers[3];
//some other members
};
来源:
template<class type>
BufferedDatenKonsistenz<type>::BufferedDatenKonsistenz(type* buffer0, type* buffer1, type* buffer2) : numberOfBuffers(3){
this->buffers[0] = buffer0;
this->buffers[1] = buffer1;
this->buffers[2] = buffer2;
}
template<class type>
BufferedDatenKonsistenz<type>::BufferedDatenKonsistenz(type* buffer0, type* buffer1) : numberOfBuffers(2){
this->buffers[0] = buffer0;
this->buffers[1] = buffer1;
this->buffers[2] = NULL;
}
并将这个类添加为其他类中的私有(private)成员:
其他类头:
class SomeClass {
public:
SomeClass();
~SomeClass();
//some stuff
private:
//some stuff
static const uint16_t cyclicDataSize = 50;
uint16_t cyclicDataArea0[cyclicDataSize];
uint16_t cyclicDataArea1[cyclicDataSize];
uint16_t cyclicDataArea2[cyclicDataSize];
// How do I get this right???????????????????????????????????????????????????
DatenKonsistenz::BufferedDatenKonsistenz<uint16_t> bufferLogik(cyclicDataArea0,
cyclicDataArea1,
cyclicDataArea2);
};
我不知道我正在尝试的事情是否可行。 但是,如果可能的话,我不知道模板内容是否错误,或者我是否必须将构造函数中的所有内容移动到初始化列表或其他任何内容中。
这里有太多潜在的错误,我自己 atm 无法弄清楚。
顺便说一句。我坚持使用 C++03,因为编译器不能做任何更新的事情。
最佳答案
您应该能够在 SomeClass
的构造函数中安全地初始化它们,例如在初始化列表中:
SomeClass::SomeClass()
: bufferLogik(cyclicDataArea0, cyclicDataArea1, cyclicDataArea2)
{}
关于c++ - 使用模板和多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781529/