с ++ как? function_x (новый объект1) - PullRequest
0 голосов
/ 01 февраля 2010

Привет, я хочу сделать следующее

вместо

MyClass object;
 function_x (object);

я хочу

function_x ( new object );

так, какова будет структура MyClass, чтобы иметь возможность сделать это .. если я только что скомпилировал, это дает мне ошибку времени компиляции


ответ function_x (MyClass() )

Новое редактирование, спасибо за быстрые ответы. Я задал неправильный вопрос. Я должен был спросить, как

временные переменные, созданные в C ++ и ответ

Ответы [ 3 ]

3 голосов
/ 01 февраля 2010

new вызывается для классов, а не для объектов. И он возвращает указатель, поэтому, если function_x не примет указатель, это невозможно.

Вы можете сделать это, хотя:

void function_y(MyClass* ptr)
{
  // Do something
}

// Then call
function_y(new MyClass);

Обратите внимание на несколько вещей:

  1. Конструктор по умолчанию MyClass вызывается при его создании
  2. function_y должен держать указатель в каком-то доступном месте, чтобы избежать утечки памяти

Это то, что вам нужно, или что-то еще?

0 голосов
/ 01 февраля 2010

Согласно редактированию, если вы хотите создать временный объект, вам может понравиться это: function_x (MyClass ());. Обратите внимание, что вы не можете изменить этот временный объект, поэтому ваш function_x должен принимать этот параметр по const-reference.

0 голосов
/ 01 февраля 2010

new object возвращает object*, поэтому подпись для function_x должна быть:

void function_x(object* obj) {
}

И вы можете вызывать оператор new только для класса, но не для экземпляров класса.

...