gpt4 book ai didi

C++ 流引用作为类成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:43 24 4
gpt4 key购买 nike

我有一个类是这样的:

#include <iostream>

class A {
public:
A (std::istream& is): _is(is) {}

void setInputSource (std::istream& is) {
_is = is;
}

A& operator>> (int& x) {
_is >> x;
return *this;
}

private:
std::istream& _is;
};

我想要 _is成员(member)仅供引用。我的意思是,它必须“指向”外部 std::istream我不想要 setInputSource()复制作为参数传递的流的方法。问题是程序无法编译,因为我提到的那个方法试图访问 operator=类(class) std::basic_istream<char> .

我的目标是让类在这样的程序中表现得像预期的那样:

int main() {
int a, b;

std::ifstream ifs("myfile.txt");
A myA(std::cin);

myA >> a;
myA.setInputSource(ifs);
myA >> b;

return 0;
}

我想改用指针,但我更喜欢使用引用,因为我喜欢这样一个事实,即它们向您保证它们不会有无效值,而且在我看来这是一种更优雅的方法。

最佳答案

您不能在引用绑定(bind)后绑定(bind)到另一个对象。这是使用指针和使用引用之间的根本区别之一。鉴于此,您使用指针会更合适。

I prefer to use references as I like the fact that they warrantee you that they won't have invalid values

这不是真的。如果引用绑定(bind)到的对象被销毁,那么它引用了一个无效对象,就像指针一样。

关于C++ 流引用作为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784196/

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