在C ++中调用模板基类的成员对象的模板函数

时间:2014-03-01 17:29:12

标签: c++ templates

以下代码演示了该问题:

class Printer
{
public:
    template<int i = 2>
    void print() { cout << i; }
};

template<typename T>
class Base
{
protected:
    Printer printer;
};

template<typename T>
class Derived : public Base<T>
{
public:
    void foo()
    {
        this->printer.print<5>(); // the error happens here
    }
};

GCC的错误说“类型(...)的无效操作数到二进制'运算符&lt;'”。 出于这个原因,我认为这是一个解析问题,我尝试过使用模板关键字,但到目前为止无济于事。

当我使用默认模板参数并以下列方式调用打印机对象的功能时,一切都很好。

this->printer.print();

0 个答案:

没有答案