实现嵌套的模板化函数

时间:2012-05-04 23:38:56

标签: c++ templates

我在模板化的类中有一个模板化的类。我可以很容易地实现内联的成员函数,但在我的具体情况下,我遇到了前向声明问题,因此在声明之后被迫实现它 - 我意识到我已经忘记了如何这样做。

如果可以编译这个小例子(不移动内联定义),我的问题将得到解答:

#include <iostream>

template <typename T, typename V>
struct Outer {

    template <int Count>
    struct Inner {
        void printer() const;
    };

};

template <typename T, typename V, int Count>
inline void Outer<T, V>::Inner<Count>::printer() const {
    std::cout << "Oh hai. I'm inner<" << Count << ">" << std::endl;
}

int main() {
    Outer<int, int>::Inner<3> i;

    i.printer();

    return 0;
}

编辑:修正了Stuart修复的无关拼写错误(以帮助更清楚地回答)

1 个答案:

答案 0 :(得分:2)

以下编译并使用g ++ 4.2.1为我工作。 (它还使用在线Comeau编译器进行编译,以获得它的价值。)关键变化是(a)正确地拼写Outer,(b)分离出两组模板参数,以及(c)更改{ {1}}至Counter

Count