我想要一个接收泛型类型和泛型类型(在运行时定义)的方法。在示例中,如果我使用的是字符串类型,它需要返回第一个参数长度(在字符串中);如果我使用的是 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;
}
但是,当主函数调用ref.returnVal(10, 485); 它显示一条消息错误:'return':无法从 'std::string' 转换为 'int' 有人知道出了什么问题吗?谢谢