【发布时间】:2012-06-05 06:17:49
【问题描述】:
如何创建一个在自身内部使用模板但不在其参数中使用模板的函数?我有很多类具有相同的构造函数和函数,但在它们的构造函数中做不同的事情,所以我试图创建一个可以接受数字的函数(这是必要的)来告诉开关模板化值应该成为哪个函数.我该怎么做?
将模板放入函数中而不是模板化函数本身也不起作用
this 不起作用
#include <iostream>
template <typename T> void function(uint8_t s, std::string str1, std::string str2, std::string str3){
T var;
switch (s){
case 1:
// var = class1();
break;
// case 2 ...
// case 3 ...
default:
break;
}
}
int main() {
std::string str = "01234567";
std::cout << function(1, str, str, str) << std::endl;
return 0;
}
【问题讨论】:
-
我不确定您到底想做什么,但here 是对您代码的修复。您可能需要解释更多以获得更好的答案。
-
在无法推断模板参数时使用
function<template-args>(func-params)指定模板参数 - 请参阅@Jesse 的示例。但目前尚不清楚您希望在//var = class1();发生什么。 -
啊。哎呀。我忘了
<T>。不幸的是,这并没有解决我的问题。我事先不知道T。我想我可以更改我的代码来做到这一点,但我更愿意在函数中找出T
标签: c++ function templates c++11 arguments