相关疑难解决方法(0)

右值参考被视为左值?

我发布了这个答案:https://stackoverflow.com/a/28459180/2642059其中包含以下代码:

void foo(string&& bar){
    string* temp = &bar;

    cout << *temp << " @:" << temp << endl;
}
Run Code Online (Sandbox Code Playgroud)

bar左值还是左值?

我问,因为我显然不能取rvalue的地址,但我可以在这里完成rvalue引用的地址.

如果你可以对左值参考执行任何操作,你可以在左值参考上区分用"&&"而不仅仅是"&"来区分两者?

c++ rvalue lvalue rvalue-reference c++11

23
推荐指数
2
解决办法
3864
查看次数

方法返回值的地址

我有一个返回值的get方法:

int Foo::getValue() const
{
    return value_;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码将此值写入二进制文件:

void Bar::write(const Foo& foo)
{
    /* some code... */

    file_.write(reinterpret_cast<char*>(&foo.getValue()), sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

似乎一切都运作良好.但我不确定那&foo.getValue()的事情.它总是返回getValue()返回值的地址还是有任何陷阱?

EDIT1:我不想为此创建临时var.

编辑2 :是的,它编译并正常工作.

EDIT3: write是一个ostream :: write

EDIT4:使用/ Wall和/ Za它将无法编译:错误C2102:'&'需要l值

c++ function memory-address

9
推荐指数
1
解决办法
895
查看次数