存在包含内部结构TIn的结构TOut:
template <typename T>
struct TOut
{
struct TIn
{
bool b;
};
TIn in;
T t;
};
如何正确传递TIn作为某种方法的形式参数?
class Test
{
public:
template <typename T>
static void test ( const TOut<T>::TIn &i) {} //Error
};
int main()
{
TOut <double> o;
Test::test(o.in);
}
程序编译时出现以下错误:
Error 4 error C2998: 'int test' : cannot be a template definition
答案 0 :(得分:7)
您需要使用typename
关键字:
template <typename T>
static void test ( const typename TOut<T>::TIn &i) {}
请参阅Where and why do I have to put the "template" and "typename" keywords?
答案 1 :(得分:2)
为什么你不能使用更简单的
template <typename T>
static void test (const T& i)
代替?