说我有这样的代码:

class B {}
class D : class B {}

void MakeD(int params, D** out, int* status_out);


今天,我这样称呼它:

B* b;
if (use_d) {
  D* d;
  MakeD(params, &d, &status)
  b = d;
} else...


有没有一种更简洁的方式编写此代码,从而避免了单独的“ d”对象,但又不丢失现有的类型安全性(即,没有reinterpret_cast)?

最佳答案

有什么理由不能仅仅修改MakeD()方法以返回新的D而不是传递指向D的指针?

即。

D* MakeD(int params, int* status_out);

...

b = MakeD(params, &status);


还是MakeD()方法是其他人的API的一部分?

10-05 22:17