c++ - 使用模板和多个构造函数

标签 c++ c++03

我刚开始使用模板和 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/

相关文章:

c++ - 使用 Boost 预处理器将 Any 提升到 Boost Variant

c++ - 如何在不复制的情况下稳定排序?

c++ - 当目标类有多个构造函数时消除强制转换运算符的歧义

c++ - 比较处理 int 和 std::vector::size_type

c# - 如何将 C# 对象引用传入和传出 C++

c++ - 如何在 C++(g++ 编译器)中初始化 unordered_set?

c++ - 用于将 std::string 转换为 QString 的包装器?

c++ - 如何在 mongodb::BSONObj Builder 中创建字符串通配符

c++ - 子类作为模板基类的模板模板参数,而模板基类又是子类函数参数

c++ - Const 引用以延长对象的生命,然后是 const_cast,这是个好主意吗?