我在模板化的类中有一个模板化的类。我可以很容易地实现内联的成员函数,但在我的具体情况下,我遇到了前向声明问题,因此在声明之后被迫实现它 - 我意识到我已经忘记了如何这样做。
如果可以编译这个小例子(不移动内联定义),我的问题将得到解答:
#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修复的无关拼写错误(以帮助更清楚地回答)
答案 0 :(得分:2)
以下编译并使用g ++ 4.2.1为我工作。 (它还使用在线Comeau编译器进行编译,以获得它的价值。)关键变化是(a)正确地拼写Outer
,(b)分离出两组模板参数,以及(c)更改{ {1}}至Counter
。
Count