如何使用'using'声明模板基类的模板方法?

时间:2016-02-05 22:02:01

标签: c++ templates

描述了两种访问模板基类成员的方法here。当基类成员本身是模板时,使用上面的第一个方法(this->)访问它here。有没有办法在这种情况下使用第二种方法(使用xxxx)?

例如,在下面的代码中,是否可以替换“????”用什么来使代码工作?

using namespace std;

template<typename T> class base
{
public:
    template<bool good> void foo()
    {
        cout << "base::foo<" << boolalpha << good << ">()" << endl;
    }
};

template<typename T> class derived : public base<T>
{
public:
    using ????
    void bar()
    {
        foo<true>();
    } 
};

1 个答案:

答案 0 :(得分:1)

仅供记录,即使它没有提供任何答案或解决方法,但我目前正在使用VS Express 2013,我可以向您保证

#include <iostream>

template<typename T> class base
{
public:
    template<bool good> void foo()
    {
        std::cout << "base::foo<" << good << ">()" << std::endl;
    }
};

template<typename T> class derived : public base<T>
{
public:

    void bar()
    {
        foo<true>();
    }
};

struct A{};

void main() {

    derived<A> a;
    a.bar();
}

完美无缺......