【发布时间】:2023-01-24 19:51:35
【问题描述】:
我是 C++ 模板的初学者,我无法从带有附加参数的基类继承我的派生类。我有基类:
// idproc.h file
#include <array>
using namespace std;
template<class T, int numGroups>
class BaseSequence
{
public:
int m_numGroups;
array<T, numGroups> m_groups;
int m_currPos;
public:
BaseSequence() : m_numGroups(numGroups), m_currPos(0) {
std::fill(begin(m_groups), end(m_groups), T());
}
virtual string PrintSequence() {
string identifier;
for (auto &&group : m_groups)
{
identifier += to_string(group) + "-";
}
identifier.pop_back();
return identifier;
}
};
我的派生类是:
template<class T, int numGroups, int maxVal>
class IdentifierSequence : BaseSequence<T, numGroups>
{
int m_maxVal;
public:
using BaseSequence<T, numGroups>::PrintSequence;
IdentifierSequence(int maxVal): m_maxVal(maxVal) {}; // compiler error
};
如您所见,我的 IdentifierSequence 有一个名为 m_maxVal 的附加参数,我需要在构造函数中对其进行初始化。
我通过以下方式使用它:
// main.cpp file
#include <iostream>
#include "idproc.h"
int main(int argc, char** argv) {
IdentifierSequence<int, 10, 2> is;
std::cout << is.PrintSequence() << std::endl;
return 0;
}
请向我解释如何解决此问题。
【问题讨论】:
-
为什么你有一个与构造函数参数同名的模板参数?
-
你应该在问题中包括编译器错误