如何在C ++中将指向变量的指针声明为函数的参数?

时间:2010-03-11 21:35:24

标签: c++ pointers new-operator declaration function-parameter

我有一个const D3DVECTOR3 *pos的函数,但我没有理由事先声明这个。对我来说最合乎逻辑的解决方案是使用new:

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

但我不知道我会如何处理它deleting,在函数中进行初始化。我的下一个想法是使用&运算符,如下所示:

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

但我不知道这是否是一种有效的方法。 (它没有出错,但是有很多东西不能给出非常好的错误)。我应该使用new&或其他一些我忽视的技术吗?

2 个答案:

答案 0 :(得分:5)

不可能直接向临时调用address-of运算符(MSVC会告诉您这也不是标准C ++的更高警告级别)。除了你可以做

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

但这很恶心。只需声明一个局部变量并传递其地址。

答案 1 :(得分:0)

我认为没有理由不在函数调用之前实例化对象,然后删除它。另外值得注意的是,

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

我认为如果Function没有返回指针或将其存放到某种内存池中,这将导致内存泄漏。希望这会有所帮助。