Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++; 我在C++中有以下代码-< template <class T> class TempClass { T value; public: TempClass(T item) { value = item; } T getValue() { return value; } }; int main() { TempClass<string>* String = new TempClass<string>("Rin>Sakura"); cout << "Output Values: " << String->getValue() << "\n"; class TempClass<int>* integer = new TempClass<int>(9); cout << "Output Values: " << integer->getValue(); } 模板 类TempClass{ T值; 公众: 临时班(T项) { 价值=项目; } T getValue() { 返回值; } }; int main() { TempClass*字符串= 新天宝级(“Rin>樱花”); cout_C++_Class_Templates - Fatal编程技术网 樱花”); cout,c++,class,templates,C++,Class,Templates" /> 樱花”); cout,c++,class,templates,C++,Class,Templates" />

在C++; 我在C++中有以下代码-< template <class T> class TempClass { T value; public: TempClass(T item) { value = item; } T getValue() { return value; } }; int main() { TempClass<string>* String = new TempClass<string>("Rin>Sakura"); cout << "Output Values: " << String->getValue() << "\n"; class TempClass<int>* integer = new TempClass<int>(9); cout << "Output Values: " << integer->getValue(); } 模板 类TempClass{ T值; 公众: 临时班(T项) { 价值=项目; } T getValue() { 返回值; } }; int main() { TempClass*字符串= 新天宝级(“Rin>樱花”); cout

在C++; 我在C++中有以下代码-< template <class T> class TempClass { T value; public: TempClass(T item) { value = item; } T getValue() { return value; } }; int main() { TempClass<string>* String = new TempClass<string>("Rin>Sakura"); cout << "Output Values: " << String->getValue() << "\n"; class TempClass<int>* integer = new TempClass<int>(9); cout << "Output Values: " << integer->getValue(); } 模板 类TempClass{ T值; 公众: 临时班(T项) { 价值=项目; } T getValue() { 返回值; } }; int main() { TempClass*字符串= 新天宝级(“Rin>樱花”); cout,c++,class,templates,C++,Class,Templates,您可以使用可变模板和std::tuple来保存不同类型的值。最简单的示例: template<class... Ts> class TempClass { using Tuple = std::tuple<Ts...>; Tuple values; public: TempClass(Ts... items) : values{items...} {} template<std::size_t index> st

您可以使用可变模板和
std::tuple
来保存不同类型的值。最简单的示例:

template<class... Ts>
class TempClass {
    using Tuple = std::tuple<Ts...>;
    Tuple values;

public: 
    TempClass(Ts... items) : values{items...} {} 

    template<std::size_t index>
    std::tuple_element_t<index, Tuple> getValue() const {
        return std::get<index>(values);
    } 
}; 

int main() {
    TempClass<int, std::string, double> tc1{0, "string", 20.19};
    std::cout << tc1.getValue<2>(); // Output: 20.19
}
模板
临时班{
使用Tuple=std::Tuple;
元组值;
公众:
TempClass(Ts…items):值{items…}{}
模板
std::tuple\u元素\u t getValue()常量{
返回std::get(值);
} 
}; 
int main(){
临时类tc1{0,“字符串”,20.19};

std::cout是的,你的答案似乎就是我想要的。但是我得到了一个错误:“std”命名空间中的“tuple\u element\t”在编译器上运行时没有命名模板类型错误。据我所知,这可能是编译器的问题。@RijulGanguly,试试
typename std::tuple\u element::type
if (flag)
    //initialize an instance of TempClass with one template

    TempClass<string> s("haha");

else
    //initialize an instance of TempClass with 2 templates.

    TempClass<string, int> s("haha", 5);

template<class... Ts>
class TempClass {
    using Tuple = std::tuple<Ts...>;
    Tuple values;

public: 
    TempClass(Ts... items) : values{items...} {} 

    template<std::size_t index>
    std::tuple_element_t<index, Tuple> getValue() const {
        return std::get<index>(values);
    } 
}; 

int main() {
    TempClass<int, std::string, double> tc1{0, "string", 20.19};
    std::cout << tc1.getValue<2>(); // Output: 20.19
}