【发布时间】:2019-03-24 07:51:54
【问题描述】:
我能做到:
std::ofstream outfile; outfile.open("foo");
但不是:
std::ofstream outfile.open("foo");
因为它给出了这个错误:
error: expected ';' at end of declaration
std::ofstream outfile.open("foo");
^
您也可以在 Live Demo 中看到。
为什么?
PS:我知道我可以std::ofstream outfile("foo");,但我怀疑我缺少 C++ 的机制,这就是我问的原因。
【问题讨论】:
-
如果你想知道为什么在对象构造中不允许成员调用,你选择了非常糟糕的例子。因为 90% 的答案是 - 您可以将名称传递给 ctor。
-
这个例子选择了我@Slava。 ...正如答案部分所证明的那样,您是对的。
-
@Slava "you can pass name to ctor" 嗯,不,不是真的......你不能命名构造函数,也不能直接“调用”它声明或初始化程序。
-
@LightnessRacesinOrbit 我很确定 Slava 的意思是使用构造函数打开文件,通过将文件名作为构造函数的第一个参数传递。
-
@gsamaras 你说得对,我的意思确实是文件名。
标签: c++ file oop fstream ofstream