C++;从指向对象的指针访问运算符()的语法 我有C++ 11随机数分布的实例;代码>一致性ItIn分发< ,以及C++ M1937、64 < /代码>算法的实例。

C++;从指向对象的指针访问运算符()的语法 我有C++ 11随机数分布的实例;代码>一致性ItIn分发< ,以及C++ M1937、64 < /代码>算法的实例。,c++,pointers,C++,Pointers,我使用指向一个类的指针传递对这些对象的引用,该类维护指向这两个对象的指针以供以后使用 在这个类的一个成员函数中,我希望调用操作符()函数,从统一整数分布生成一个随机数 我已经做了以下工作。(可能不正确,因此提出问题。) 这看起来有点奇怪或模棱两可,至少对我来说是这样,因为我以前从未遇到过这种情况 如果没有指针,可以执行以下操作: int random_number = dis(gen_p); 使用其中一个 (*dis_p)(*gen_p); (像你一样)或者 然而,就我个人而言,我根本不会使

我使用指向一个类的指针传递对这些对象的引用,该类维护指向这两个对象的指针以供以后使用

在这个类的一个成员函数中,我希望调用
操作符()
函数,从
统一整数分布生成一个随机数

我已经做了以下工作。(可能不正确,因此提出问题。)

这看起来有点奇怪或模棱两可,至少对我来说是这样,因为我以前从未遇到过这种情况

如果没有指针,可以执行以下操作:

int random_number = dis(gen_p);
使用其中一个

(*dis_p)(*gen_p);
(像你一样)或者

然而,就我个人而言,我根本不会使用指针。反而

dis(gen);
将执行此操作(因为
dis\u p
指向
dis
gen\u p
指向
gen


可以将引用存储在类中(尽管它们需要使用构造函数初始化,并且不能像指针那样重新放置)。

您也可以先将指针转换为引用:

auto& rDis = *dis_p;
auto& rGen = *gen_p;
rDis(rGen);
编译器将优化整个过程,使其成为
(*dis\p)(*gen\p)
,因此不会产生运行时开销


另外,普通的
(*dis\p)(*gen\p)
也没有什么问题,我不认为它有那么混乱

您可以使用
->
,但坦率地说,为什么不存储创建的值呢?为什么要使用指针呢?这看起来很好:在解引用表达式
*dis_p
周围加上括号,使其完全符合您的要求。但是,除非有一种可能,在某些情况下,代码< DISPYP<代码>需要<代码> null <代码>,您可以用引用替换指针,并获得熟悉的语法。我认为您应该习惯于在涉及指针的C++(和C)代码中常见的语法。否则,是的,远离它们,你将永远不必消化这些晦涩难懂的语法。
dis_p->operator()(*gen_p);
dis(gen);
auto& rDis = *dis_p;
auto& rGen = *gen_p;
rDis(rGen);