读书人

为何在这个成员函数前面多加一个typen

发布时间: 2012-06-07 15:05:14 作者: rapoo

为何在这个成员函数前面多加一个typename?
头文件里面定义模版类:

C/C++ code
template< typename T, int AS = 1 >class Octree{   ....};{


cpp文件里面:
C/C++ code
template< typename T, int AS >typename Octree<T,AS>::Node*& Octree<T,AS>::Branch::child( int x, int y, int z ){    return children[z][y][x];}


为什么前面多加了typename ?

[解决办法]
为了告诉编译器Octree<T,AS>::Node是个类型,而不是一个其他东西(比如某个静态变量)

C++标准规定typename在这种场合下是必须的。不过即使不加,有的编译器比如VC可能还是让你过的。

读书人网 >C++

热点推荐