说我有这样的代码:
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的一部分?