我有一个包含三个数据成员的模板类:“ val1”,“ val2”和“ val3”。我想在主函数中定义模板类的STL列表结构。我正在尝试(未成功)将三个对象添加到列表中,然后在检索列表时将它们打印出来。
此行会产生错误:singleTemplate t(8,5,6);
错误C2664
没有可用的用户定义的转换运算符可以执行此转换,否则无法调用该运算符
实施:
#pragma once
template < class T1, class T2, class T3 >
class singleTemplate
{
public:
singleTemplate();
singleTemplate(T1 v1, T2 v2, T3 v3);
void setVal(T1 v1, T2 v2, T3 v3);
void show();
private:
T1 val1;
T2 val2;
T3 val3;
};
#include <iostream>
using namespace std;
#include "singleTemplate.h"
#include <forward_list>
#include <algorithm>
int main()
{
forward_list<double> mylist;
singleTemplate t(8, 5, 6);
mylist.push_front(t);
}
答案 0 :(得分:2)
目前尚不清楚您要达到的目标。也许您误解了模板的用途。
也许您想要这样的东西:
#include <forward_list>
#include <algorithm>
int main()
{
forward_list<singleTemplate<int, int, double>> mylist;
singleTemplate<int, int, double> t;
mylist.push_front(t);
}
但是要进行编译,您至少需要实现这样的默认构造函数:
template < class T1, class T2, class T3 >
class singleTemplate
{
public:
singleTemplate() {}; // <<< modify here
singleTemplate(T1 v1, T2 v2, T3 v3);
void setVal(T1 v1, T2 v2, T3 v3);
void show();
private:
T1 val1;
T2 val2;
T3 val3;
};
如果要使用其他构造函数以及setVal
和show
方法,则还需要实现它们。