首页 > 解决方案 > 如何定义模板类的内部类

问题描述

在模板类B的函数Fb中,类型A::InnerA是错误的,如何定义。

错误:'A::InnerA' 不是类型 void Fb(A::InnerA* i) {

template <typename T>
class A {
public:
    class InnerA {
    public:
        T* get() {
            return _data;
        }
        void set(T* t) {
            _data = t;
        }
    private:
        T* _data;
    };

    void Fa(InnerA* i) {

    }
};


template <typename T>
class B {
public:
    void Fb(A<T>::InnerA* i) {
       _a.Fa(i);
    }
private:
    A<T> _a;
};

c++14可以通过auto type编译,什么是real type,怎么定义?

template <typename T>
class B {
public:
    void Fb(auto i) {
       _a.Fa(i); 
    }
private: 
    A<T> _a;
};

标签: c++templates

解决方案


推荐阅读