首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++编程思想Stack:Link* p的异常

2013-08-01 
C++编程思想Stack::Link* p的错误templateclass Tclass Stack{...struct Link{...}*headpublic:Stack::

C++编程思想Stack::Link* p的错误
template<class T>
class Stack
{
  ...
  struct Link{...}*head;
public:
  Stack::Link *p;
  ...
};
(C++编程思想P415 卷一)这一行在Visual Studio 2010下出错
warning C4346: 'Stack<T>::Link' : dependent name is not a type
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
这是光盘上的源代码...
但是去掉Stack::就会正确。
求原因 C++编程思想 迭代器 嵌套定义
[解决办法]
应该是缺少 typename 的问题
[解决办法]
不是typedef,是typename。
直接使用Link,编译器可以很容易的确定在当前作用域中寻找名称的定义
如果你没有申明模板的话,你的Stack::Link* p是绝对可以通过编译的,没有任何歧义
但是你这儿申明的是一个模板,这个时候按照编译器的一套规则(具体我忘了)是不能确定Stack<T>::Link是一个类型还是一个其他东西的。

热点排行