我可以:

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++机制,这就是我要问的原因。

最佳答案

类似于当您具有一个返回对象的函数并且要在同一行上调用该对象的方法时:

struct foo { void bar(){} };
foo create_foo() { return foo(); }

您可以存储create_foo的结果,也可以使用其返回值调用方法,但不能同时使用以下两种方法:
create_foo().bar();          // OK
auto f = create_foo();       // OK
auto f = create_foo().bar(); // NOPE

返回ofstream:您可以编写
std::ofstream().open("foo");

但是您没有机会获得对ofstream的引用。

关于c++ - 为什么我不能在同一代码行中创建和打开ofstream?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52892060/

10-11 16:03