C++ 模板是否继承另一个模板?

C++ 模板是否继承另一个模板?,c++,C++,我试着从大到小排序 我的数学向量继承自向量 现在的问题是我看不到inhert函数(见下文&&&&&&) 模板 类向量 { 受保护的: T*阵列; 整数大小; 国际能力; 公众: 向量(); 向量(向量和拷贝数组); T运算符=(常数T*元素); void运算符=(常量T元素); T*运算符[](常数int索引)常数; ostream&operator是的,它是从向量继承的正确方法。例如,使用公共方法write template<class T> void MathVector<

我试着从大到小排序 我的数学向量继承自向量 现在的问题是我看不到inhert函数(见下文&&&&&&)

模板
类向量
{
受保护的:
T*阵列;
整数大小;
国际能力;
公众:
向量();
向量(向量和拷贝数组);
T运算符=(常数T*元素);
void运算符=(常量T元素);
T*运算符[](常数int索引)常数;

ostream&operator是的,它是从
向量
继承的正确方法。例如,使用公共方法write

template<class T>
void MathVector<T>::Sort(const int Direction)
{
    Vector<T>::yourNonPrivateMethod();
    auto test = Vector<T>::yourNonPrivateMember;
};
编辑 下面是一个简化的示例:

#include <iostream>

template<typename T> class Base
{
public:
    Base() : member( static_cast<T>( 0 ) ) {};

    virtual ~Base() = default;

    T member;

    void baseMemberFunction()
    {
        std::cout << "Base<T>::memberFunction()" << std::endl;
    }

    void anotherBaseMemberFunction()
    {
        std::cout << "Base<T>::anotherBaseMemberFunction()" << std::endl;
    }
};


template<typename T> class Derived : public Base<T>
{
public:
    Derived() : Base<T>(), member(1) {}

    T member;

    using Base<T>::anotherBaseMemberFunction;

    void derivedMemberFunction()
    {
        std::cout << "Derived<T>::derivedMemberFunction()" << std::endl;
        Base<T>::baseMemberFunction();
        anotherBaseMemberFunction();
        std::cout << "Derived<T>::member = " << member << std::endl;
        std::cout << "Base<T>::member = " << Base<T>::member << std::endl;
    }
};


int main()
{
    Derived<int> derived;

    std::cout << " --- Call baseMemberFunction --- " << std::endl;
    derived.baseMemberFunction();

    std::cout << " --- Call derivedMemberFunction --- " << std::endl;
    derived.derivedMemberFunction();

    return 0;
}
#包括
模板类基
{
公众:
Base():成员(static_cast(0)){};
virtual~Base()=默认值;
T成员;
void baseMemberFunction()
{

(我不知道为什么你的方式和我的方式可能与我错过的某件事有关wirte@yarin_hala:请检查编辑的代码。使用
g++-5-std=c++11-Wall-pedantic
编译。它应该准确地映射您的问题。顺便说一下:使基类中的析构函数成为虚拟的。
template<class T>
void MathVector<T>::Sort(const int Direction)
{

this->  &&&&&&/* i can't see the public mathods of vector*/&&&&&&


};
template<class T>
void MathVector<T>::Sort(const int Direction)
{
    Vector<T>::yourNonPrivateMethod();
    auto test = Vector<T>::yourNonPrivateMember;
};
using Vector<T>::yourNonPrivateMethod;
#include <iostream>

template<typename T> class Base
{
public:
    Base() : member( static_cast<T>( 0 ) ) {};

    virtual ~Base() = default;

    T member;

    void baseMemberFunction()
    {
        std::cout << "Base<T>::memberFunction()" << std::endl;
    }

    void anotherBaseMemberFunction()
    {
        std::cout << "Base<T>::anotherBaseMemberFunction()" << std::endl;
    }
};


template<typename T> class Derived : public Base<T>
{
public:
    Derived() : Base<T>(), member(1) {}

    T member;

    using Base<T>::anotherBaseMemberFunction;

    void derivedMemberFunction()
    {
        std::cout << "Derived<T>::derivedMemberFunction()" << std::endl;
        Base<T>::baseMemberFunction();
        anotherBaseMemberFunction();
        std::cout << "Derived<T>::member = " << member << std::endl;
        std::cout << "Base<T>::member = " << Base<T>::member << std::endl;
    }
};


int main()
{
    Derived<int> derived;

    std::cout << " --- Call baseMemberFunction --- " << std::endl;
    derived.baseMemberFunction();

    std::cout << " --- Call derivedMemberFunction --- " << std::endl;
    derived.derivedMemberFunction();

    return 0;
}