【发布时间】:2021-10-27 10:10:41
【问题描述】:
当参数是基本结构的列表时,如何调用具有不同参数的函数,而在调用函数时,参数是继承结构的列表。
甚至有可能吗?我有错误
no known conversion from list<Stats> to list<MyStats>
如果有人知道如何正确命名这个问题,甚至重新表述它,请这样做。
struct Stats{
int number;
};
struct MyStats:Stats{
char letter;
};
using namespace std;
std::list<Stats> extractFirstBatch(std::list<Stats> stats){
int counter=0;
std::list<Stats> batch;
for(const auto&s: stats){
counter++;
batch.push_back(s);
if(counter>10)
break;
}
return batch;
}
int main()
{
std::list<MyStats> stats;
MyStats s;
s.number=1;
stats.push_back(s);
//error no matching function for call to 'extractFirstBatch'
//no know conversion from list<Stats> to list<MyStats>
QList<Stats> newStats=extractFirstBatch(stats);
return 0;
}
【问题讨论】:
-
让我们假设(为了讨论,因为-正如您所说-您不能)您想要的转换类型是可能的。你有一个
std::list<Stats>,它可以以某种方式转换为std::list<MyStats>。如果您访问std::list<MyStats>的元素,您希望这些元素的letter成员具有什么值?您的期望(可能特定于您对MyStats和Stats类型的特定理解)是否与可能存储在std::list中的所有其他类型相关?