2017-02-27 83 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)++;