Как объявить указатель на переменную как параметр функции в C ++? - PullRequest
1 голос
/ 12 марта 2010

У меня есть функция, которая принимает const D3DVECTOR3 *pos, но у меня нет причин объявлять это заранее. Наиболее логичным решением для меня было использование нового:

Function(
    //other parameters,
    new D3DXVECTOR3(x, y, 0));

но я не знаю, как бы поступить deleting, beign, инициализированный в функции. Моей следующей мыслью было использование оператора &, например:

Function(
    //other parameters,
    &D3DVECTOR3(x, y, 0));

но я не знаю, является ли это правильным способом сделать это. (Это не дает ошибки, но есть много вещей, которые не дают ошибок, которые не всегда хороши). Так я должен использовать new, & или какой-то другой метод, который я пропускаю?

Ответы [ 2 ]

5 голосов
/ 12 марта 2010

Невозможно напрямую вызвать оператор address-of для временного (MSVC скажет вам, что это не Standard C ++ на более высоких уровнях предупреждений). За исключением того, что вы можете сделать

Function(
//other parameters,
&(D3DXVECTOR3 const&)D3DXVECTOR3(x, y, 0));

Но это отвратительно. Просто объявите локальную переменную и передайте ее адрес.

0 голосов
/ 12 марта 2010

Я не вижу причин, чтобы не создавать экземпляр объекта до вызова функции, а затем удалять его. Также стоит отметить,

Function(
//other parameters,
new D3DXVECTOR3(x, y, 0));

Я думаю, что это приведет к утечке памяти, если функция не вернет указатель или не поместит его в какой-то пул памяти. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...