c – 获取右值的地址

class MyClass {
    public: MyClass(int a) : a(a) { }
    int a;
};

#include <iostream>
void print(MyClass* a) { std::cout << a->a << std::endl; }

int main() {
    print(&static_cast<MyClass&&>(MyClass(1337)));
    return 0;
}

这不适用于GCC 4.6,而它曾用于以前的版本.

现在它说:获取xvalue(rvalue reference)的地址.

有没有办法安全地将右值的地址传递给另一个函数?

解决方法:

is: there is anyway to securely pass an rvalue reference (a.k.a. address of temporary) to another function without boringly storing it in a variable just to do that?

是的,就像下一个例子一样:

#include <iostream>

class MyClass {
       public: MyClass(int a) : a(a) { }
       int a;
   };


void print(MyClass&& a) { std::cout << a.a << std::endl; }

int main() {
    print( MyClass(1337) );
}
上一篇:我永远爱着OOP——第二单元作业总结


下一篇:谷歌(Google)被墙,解决地图和字体无法显示的问题