使用以下代码:
#include <iostream>
template< class T, unsigned int NVectorDimension = 3 >
class Vector
{
};
template< unsigned int TDimension >
int RunTest( void )
{
const unsigned int VectorDimension = 4;
typedef Vector< int, VectorDimension > VectorPixelType;
}
int main(int argc, char *argv[])
{
return 0;
}
我明白了:
In function ‘int RunTest()’:
12:40: error: could not convert template argument ‘VectorDimension’ to ‘unsigned int’
error: invalid type in declaration before ‘;’ token
任何想法有什么问题?
大卫
答案 0 :(得分:1)
gcc确实存在一个错误。它现在已经修复: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48657
答案 1 :(得分:0)
如评论中所述,这应该可以正常工作。否则,您是否可以轻松更改class Vector
声明?可以尝试一下。
template< class T, const unsigned int NVectorDimension = 3 >
class Vector // ^^^^^ adding const here
{
};
如果这不起作用,那么可以尝试宏观工作作为最后的手段。
int RunTest( void )
{
#define VectorDimension 4
typedef Vector< int, VectorDimension > VectorPixelType;
// ...
#undef VectorDimension
}