【发布时间】:2014-04-06 01:05:50
【问题描述】:
我正在尝试使用静态成员定义模板类,以便模板的每个特化都有自己的静态成员。此外,静态成员是类本身的一个对象(用作链表的哨兵。)我不确定这甚至可以在 C++ 中合法地完成,但如果是这样,我正在挣扎而不是得到搞定了。
一个展示我想要完成的小样本是:
template<class E> class LL {
static LL<E> l;
};
class A {
};
template<typename A>
typename <class A>LL LL<A>::l;
当我使用 g++(4.8.1 版)编译时,它会报告:
g++ -Wall -o t-static.o t-static.cpp
t-static.cpp:9:14: error: expected nested-name-specifier before ‘<’ token
typename <class A>LL LL<A>::l;
^
t-static.cpp:9:14: error: expected unqualified-id before ‘<’ token
(错误在文件的列表行上。)
恐怕我并不真正了解诊断或类型名称,并且已经为此苦苦挣扎了一段时间,唯一的结果是我可以收到不同的错误消息。我发现了很多与此相关的问题,但没有一个问题能帮助我找到解决方案。
最后一点,我希望解决方案不是特定于特定的 g++ 版本,因为此代码的最终目标是目前使用 g++ v4.3.2 且不支持 C++11(或不支持使用 C++11。)
感谢您的帮助。
【问题讨论】:
标签: c++ templates static typename