我有一个const D3DVECTOR3 *pos
的函数,但我没有理由事先声明这个。对我来说最合乎逻辑的解决方案是使用new:
Function(
//other parameters,
new D3DXVECTOR3(x, y, 0));
但我不知道我会如何处理它deleting
,在函数中进行初始化。我的下一个想法是使用&
运算符,如下所示:
Function(
//other parameters,
&D3DVECTOR3(x, y, 0));
但我不知道这是否是一种有效的方法。 (它没有出错,但是有很多东西不能给出非常好的错误)。我应该使用new
,&
或其他一些我忽视的技术吗?
答案 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没有返回指针或将其存放到某种内存池中,这将导致内存泄漏。希望这会有所帮助。