您好我想做下一个
而不是
MyClass object;
function_x (object);
我想
function_x ( new object );
那么MyClass的结构能够做到这一点...... 如果我刚刚编译它,它会给我一个编译时错误
回答function_x (MyClass() )
新编辑感谢快速回答..我确实问过我应该问的问题
用C ++创建的临时变量和答案
答案 0 :(得分:3)
new
,而不是对象。它返回一个指针,所以除非function_x
接受指针,否则这是不可能的。
你可以这样做:
void function_y(MyClass* ptr)
{
// Do something
}
// Then call
function_y(new MyClass);
请注意以下几点:
MyClass
的默认构造函数在创建时被调用function_y
必须将指针放在某个可访问的位置以避免内存泄漏这是你需要的还是别的什么?
答案 1 :(得分:0)
new object
返回object*
,因此function_x的签名应为:
void function_x(object* obj) {
}
你只能在类上调用operator new
,而不是类的实例。
答案 2 :(得分:0)
根据编辑,如果你想创建一个临时对象,你可以这样:function_x (MyClass ());
。请注意,您无法修改此临时对象,因此您的function_x应该通过const-reference获取此参数。