在模板中非法使用类型

时间:2017-02-27 07:17:43

标签: c++ templates template-function

我是模板的新手。我无法弄清楚我做错了什么:

#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:&#39; T&#39; :非法使用此类型作为表达式

2 个答案:

答案 0 :(得分:1)

也许你应该:

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

答案 1 :(得分:1)

*T尝试取消引用data_type,这就是您收到错误的原因。

请用

替换给定代码段的第8行
(*data)++;