C++ 如何在输出参数中使用基类
假设我有这样的代码:C++ 如何在输出参数中使用基类,c++,inheritance,output-parameter,C++,Inheritance,Output Parameter,假设我有这样的代码: 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... 今天我这样称呼它: class B {} class D : class B {} void MakeD(int params, D** o
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...
今天我这样称呼它:
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”对象,但又不会丢失现有的类型安全性(即没有重新解释\u cast)?是否有任何理由不能修改MakeD()方法以返回新的d,而不是传入指向d的指针 即
< P>或是MaxdD()方法是别人的API的一部分?< p>为什么不使用基本的C++特性,如类构造函数和多态性:<代码> B*B=新D(PARAMS);<代码>类似
B *b = use_d ? new D(params) : new <something else>;
与其使用“out”参数,为什么不直接返回指针呢?我在这里看不到任何
D
对象实例化。您正在使用未定义的指针。MakeD内部发生了什么?更改标签。C没有类。这是C++@evanmcdonnal@LuchianGrigore好的,我不明白这一点。我所读的是一群人,他们可能写了可怕的C++代码,告诉你如何使用C++的所有可怕的特性,而不仅仅是类。在我的代码中,“out”是异步填写的,所以我不能更改MakeD以同步返回它,但很明显,我的问题中并没有规定该约束。