gpt4 book ai didi

c++ - 将 istream 转换为 ifstream?

转载 作者:行者123 更新时间:2023-11-28 06:44:26 24 4
gpt4 key购买 nike

我正在学习来自 http://programmingnotes.freeweq.com/?p=3144 的教程对于分配的项目。问题是项目规范要求拼写检查器将通过 main 调用通过这个功能: void spellCh(istream& inf, istream& wordlistfile, ostream& outf)而本教程使用 iftreamofstream .所以当我尝试这个时

void spellCh(istream& inf, ostream& outf)
{
ifstream& inf1 = inf;
ofstream outf1= outf;
}

它在两行上都给我一个错误:对类型“ifstream”(又名“basic_ifstream”)的非 const 左值引用无法绑定(bind)到不相关类型“istream”(又名“basic_istream”)的值

请帮忙,因为我花了一天时间想弄明白。什么样的代码可以完成它?

最佳答案

std::istreamstd::ostreamstd::ifstreamstd::ofstream 的直接基类 分别。由于称为 polymorphism 的东西, 派生类也被认为是它的基类,可以隐式地覆盖到一个指针或对其的引用(向上转换)。因此,只需将这些实例传递给函数的参数,编译器就会成功地将其转换为基类的类型。

Non-const lvalue reference to type 'ifstream' cannot bind to a value of unrelated type 'istream'

对于基到派生的转换(向下转换),没有隐式转换。您必须使用目标类型为 std::ifstream&static_cast 进行转换。

关于c++ - 将 istream 转换为 ifstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com