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: 構文エラー: ';' がありません >''テンプレート<''の前

ただし、call function 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 に答える