ジェネリック型とジェネリック型 (実行時に定義される) を受け取るメソッドが必要です。この例では、文字列型を使用している場合、最初のパラメーターの長さ (文字列) を返す必要があります。int 型を使用している場合は、最大 (int 整数) を返す必要があります。
見てください:
#include "stdafx.h"
#include <sstream>
#include <iostream>
#include <conio.h>
#include <sstream>
#include <string>
#include <atldbcli.h>
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
using namespace std;
class Test
{
public:
template<class T>
T returnVal(T valueOne, T valueTwo);
};
template<class T>
T Test::returnVal(T valueOne, T valueTwo)
{
if(typeid(valueOne) == typeid(string))
{
string teste = valueOne;
int testeInt = teste.size();
ostringstream testeString;
testeString << testeInt;
teste = testeString.str();
return teste;
}
else
return valueOne > valueTwo? valueOne:valueTwo;
}
int main()
{
string reference = "stringVal";
Test ref;
cout << ref.returnVal<string>(reference, "asasas") << endl;
cout << ref.returnVal<int>(10, 485);
getch();
return 0;
}
ただし、main 関数がref.returnVal(10, 485); を呼び出すと、エラーメッセージが表示されます: ' return' : cannot convert from 'std::string' to 'int' ありがとう