如何将 ifstream&return from 方法分配给变量?
How to assign ifstream& return from method to variable?
我有一个方法名称open_file
声明如下。
ifstream& open_file(ifstream &in, const string &filename)
{
in.close();
in.clear();
in.open(filename.c_str());
return in;
}
我想把它的返回值赋给main()方法中的变量:
int main()
{
ifstream val1;
ifstream val2 = open_file(val1, "test.cpp");
return 0;
}
我不能编译代码。我的问题是:
- 我可以分配返回值从open_file方法到变量在main(),如果是这样,如何做到这一点?
- 如果我不能从open_file方法分配返回值到变量,如果我改变它的返回类型为void有什么不同?
ifstream val2 = open_file(val1, "test.cpp");
这将无法编译,因为它试图复制流对象,这是通过创建复制构造函数private
(参见此)禁用的。
这样做:
ifstream & val2 = open_file(val1, "test.cpp");
//val1 and val2 is same here, as val2 is just a reference to val1
但是,你为什么要那样做呢?你可以简单地写:
open_file(val1, "test.cpp");
//use val1 here - no need to define val2
由于返回值被忽略,所以最好将返回类型设置为void
。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- GlobalAlloc而不是其他分配方法
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- 使 std::vector 分配对齐内存的现代方法
- 使用同一类中的方法重新分配字段时出现问题
- 工厂方法:分配和strcpy_s的差异
- 在类中分配具有方法值的变量
- 删除类成员的动态分配内存的最佳方法是什么
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- const_cast const 方法中的"this"将"this"分配给外部变量?
- 使用类中的方法作为运算符将值分配给类的私有成员
- 释放分配给大量矢量的内存的最有效方法是什么?
- C++类内部结构动态分配的方法
- 为大无符号整数分配内存的有效方法
- C ++中新分配的int的内存大小,有没有不同更好的方法来查看它?
- c++内存分配方法
- 两种C++分配方法有什么区别
- c++在构造函数中使用指向其他方法的指针分配方法:我做错了什么?