Я нуб, и это мой первый пост.
Что касается&’характер, я понимаю его общее использование в качестве ссылки, адреса и логического оператора, …
Однако, когда я пытался заставить работать функции генератора случайных чисел, я заметил еще одно использование&’характер, которого я не видел раньше … и нет явной документации об этом (по крайней мере, в Интернете).
Обратите внимание на ‘&’приходит в конце параметра mt19937&,
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);
Что это? Я предполагаю, что это как-то используется как ссылка, но если я попытаюсь поставить&’перед параметром компилятор говорит, что это недопустимо.
Любое объяснение будет оценено.
NK.
Амперсанд перед переменной дает вам адрес этой переменной
int a = 3;
std::cout << &a << std::endl; // 0x12345678 or similar
Амперсанд после типа делает его ссылочным типом
int& b = a;
std::cout << b << std::endl; // 3
a = 4;
std::cout << b << std::endl; // 4
boost::mt19937
это тип, так boost::mt19937&
является ссылочным типом для boost::mt19937
, Выкладываю амперсанд перед (&boost::mt19937
) не имеет смысла, потому что вы не можете получить адрес типа.
Других решений пока нет …