如何创建T*
在标准 C++ 中初始化的临时值?
void foo( int );
void bar( int * );
int main()
{
foo( int() ); // works. a temporary int - value initialized.
bar( ??? ); // how to create a temporary int *?
}
只是出于好奇。
如何创建T*
在标准 C++ 中初始化的临时值?
void foo( int );
void bar( int * );
int main()
{
foo( int() ); // works. a temporary int - value initialized.
bar( ??? ); // how to create a temporary int *?
}
只是出于好奇。
最简单的是使用花括号:
bar({});
或using
声明:
using p = int*;
bar( p() ); // how to create a temporary int *?
sehe只是让我想起了 , 和 的愚蠢而明显nullptr
的0
答案NULL
。
bar(nullptr);
而且我敢肯定还有更多的方法。
GCC 允许您使用复合文字,但从技术上讲这是不允许的
bar((int*){});
只是为了好玩,您可以尝试typedef
:
#include <iostream>
void foo( int ) {}
typedef int* PtrInt;
void bar( PtrInt p )
{
std::cout << "The value of p is " << p;
}
int main()
{
foo( int() );
bar( PtrInt() );
}
现场示例:http: //ideone.com/sjOMlj
为什么不简单地使用这样的东西:
int i=0;
bar(&i); // safe to dereference in bar()
或者您正在寻找内联?如果是这样,您可以使用一些令人皱眉的强制转换,但bar()
实际上不应该取消引用该指针:
bar((int*)0); // or use nullptr if your C++ compiler is more recent