0

我正在尝试在一个类中做一个通用方法,现在,我有类似的东西:

#include "stdafx.h"
#include <sstream>
#include <iostream>
#include <conio.h>

using namespace std;


class Test
{
public:
    template<class T>
    T returnVal(T value);
}

template<class T>
T Test::returnVal(T value)
{
    return value;
}


int main()
{
    string reference = "stringVal";
    Test ref;
    cout << ref.returnVal<string>(reference);
    getch();
    return 0;
}

错误消息:错误 1 ​​错误 C2143:语法错误:缺少 ';' 之前 >''模板<''

但是,它在调用函数 returnVal (main()) 中显示错误,我不确定这段代码的验证(我正在学习这个)。这有什么问题?

4

2 回答 2

2

你漏了一个分号!

只需;在类定义之后放置一个权利。

class Test
{
 ...
};
 ^
 |
 +---- HERE
于 2013-09-18T14:12:22.383 回答
0

以下编译并按预期运行:

#include <iostream>

using namespace std;

struct Test
{
    template<class T>
    T returnVal(T value);
};

template<class T>
T Test::returnVal(T value)
{
    return value;
};


int main()
{
    string reference = "stringVal";
    Test ref;
    cout << ref.returnVal<string>(reference);
    return 0;
}
于 2013-09-18T14:11:58.077 回答