【发布时间】:2019-04-08 23:40:01
【问题描述】:
我有一个包含三个数据成员的模板类:“val1”、“val2”和“val3”。我想在 main 函数中定义一个模板类的 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);
}
【问题讨论】:
-
"此行产生错误:" 请复制粘贴您收到的错误。我不了解你,但我不记得错误代码。
-
t不是double。std::list不知道如何插入。如果您希望它扩展到推送t的成员,那么您需要编写一个函数来为您执行此操作。 -
您创建了
forward_list的double,然后您尝试将push_frontsingle_parameter类型变量。在list<T>中,您只能使用push类型为T的变量。在你的情况下,double. -
在 Visual Studio 中,您可以轻松地从“输出”选项卡中复制错误消息的文本。请使用它而不是错误列表。和@AlgirdasPreidžius 一样,我也没有记住错误代码 C2664
-
不清楚你想在这里实现什么。请edit您的问题并详细说明。