C++ 基本模板类可以';不能建造

C++ 基本模板类可以';不能建造,c++,gcc,C++,Gcc,我有以下模板基类: template <class K> class Base { protected: Base(int tableSize) : m_tableSize(tableSize) {} int doBaseWork(const K& data); private: int m_tableSize; }; 模板 阶级基础 { 受保护的: Base(int tableSize):m_tableSize(tableSize){} int D

我有以下模板基类:

template <class K>
class Base
{
protected:
    Base(int tableSize) : m_tableSize(tableSize) {}
    int doBaseWork(const K& data);
private:
    int m_tableSize;
};
模板
阶级基础
{
受保护的:
Base(int tableSize):m_tableSize(tableSize){}
int DOBASEW(常数K和数据);
私人:
int m_表大小;
};
并且该模板类继承它:

template <class K>
class Derived : public Base<K>
{
public:
    Derived (int tableSize) : Base(tableSize){}
private:
    int doDerivedWork();
};
模板
派生类:公共基
{
公众:
派生(int tableSize):基(tableSize){}
私人:
int doDerivedWork();
};
然后在我使用的代码中的某个地方:

Derived<int> testDerived(10);
派生测试派生(10);
当使用gcc编译时,我得到以下错误

class 'Derived<K>' does not have any field named 'Base'
类“派生”没有任何名为“基”的字段

我做错了什么?似乎gcc认为我在尝试初始化一个成员,但我只是在尝试初始化base。

您应该编写模板参数

Base<K>(tableSize)
Base(表大小)

您是否尝试过
:Base(tableSize){}
?这很有效。这是gcc特有的吗?不是gcc。它有一个很长的解释,与依赖名、类名注入等等有关,但它似乎很容易从代码中推断出来。它只是为了保持一致性吗?@Yotam如果你想从多个
Base
s继承呢?