Код такой:
Код | #include <iostream> using namespace std;
class base {};
class child : public base {};
void foo(base *&p) { p = 0; }
int main() { base * pb = new base(); child* pc = new child(); cout << "before: " <<"pb=" << pb << endl << "pc=" << pc << endl; foo(pb); foo(pc); cout << "after: " <<"pb=" << pb << endl << "pc=" << pc << endl; return 0; }
|
gcc выдает ошибку на стадии компиляции: не могу, дескать, преобразовать child*& к base*&. Вариант с двумя указателями тоже не проходит  Если же foо описать как foo(base *), то, ясное дело, указатель на объект не обнуляется.
Как быть? |