C++ 自动指针=空错误

C++ 自动指针=空错误,c++,c++11,pointers,auto,C++,C++11,Pointers,Auto,我收到一个编译错误: error: unable to deduce ‘auto*’ from ‘0l’ 尝试编译我的代码时: random_device rd; minstd_rand gen0(rd()); knuth_b gen1(rd()); ranlux24_base gen2(rd()); auto * generator = NULL; // error switch(generatortmp) { case 0: generator = &gen0;

我收到一个编译错误:

error: unable to deduce ‘auto*’ from ‘0l’
尝试编译我的代码时:

random_device rd;
minstd_rand gen0(rd());
knuth_b gen1(rd());
ranlux24_base gen2(rd());

auto * generator = NULL; // error

switch(generatortmp) {
    case 0: generator = &gen0;
    more cases...
}

如何解决此问题?

无法推断指针的类型,因为
NULL
不包含有关指向元素类型的信息您需要明确指定类型

type* generator = nullptr;

也应在现代C++中使用->从不使用<代码> null <代码>


我试图用这个指针来生成随机数。我希望它能够像(*生成器)()

您可以使用带有模板的功能方法:

template <typename TGenerator>
auto with_generator(TGenerator& generator)
{
    // use generator
}

< C++ >代码> null 通常定义为等于0的积分常数。它是C,其中
NULL
的定义类似于
(void*)0
。因此,如果您想使用
auto
,您必须编写

auto * generator = ( void * )0;
否则,您应该明确指定指针的类型并使用
nullptr
。比如说

void * generator = nullptr;

你可以编辑你的另一个答案,但哦,好吧:)我不能指定类型,因为它取决于真实的情况。@JackNewman:你想做什么?听起来你需要一个
模板
@VittorioRomeo我正试图用这个指针来生成随机数。我希望它能够做一些类似(*生成器)();这将生成随机数(然后使用该数进行操作)。对不起,我是C++初学者,我很难把它变成单词。<代码>自动生成器= null pTR;<代码>
void * generator = nullptr;