2017-02-27 84 views
0

我是新来的模板。我想不出什么我做错了什么:非法使用模板中的类型

#include "stdafx.h" 
#include <iostream> 
using namespace std; 

template <typename T> 
void inc(T* data) 
{ 
    (*T)++; 
} 

int main() 
{ 
    char x = 'x'; 
    int b = 1602; 

    inc<char>(&x); 
    inc<int>(&b); 
    cout << x << ", " << b << endl; 

    int a = 0; 
    cin >> a; 
    return 0; 
} 

在VS2013编译后,我得到了一个错误: 错误1个错误C2275:“T”:非法使用这种类型作为表达

+0

'* T'尝试更换给定的代码段的行号8取消引用类型,因此错误。 – DeiDei

+0

用'(* data)++'替换'(* T)++'。 – ach

+0

哇,我很愚蠢。 – Eugene

回答

1

也许你应该:

template <typename T> 
void inc(T* data) 
{ 
    (*data)++; 
} 
1

*T试图dereferece的data_type这就是为什么你得到错误。

(*data)++;