Ii'm пытается выяснить, как вызвать производный метод только класса из указателя базового класса без объявления его virtual
как в базовом, так и в производном классе.Вызов производной функции (не переопределенной) из указателя базового класса
Мой код:
ContoBancario.h
#ifndef BANCARIO_H
#define BANCARIO_H
class ContoBancario{
private:
double saldo;
public:
ContoBancario(double);
void setSaldo(double);
double getSaldo();
virtual void deposita (double);
virtual void ritira (double);
};
#endif
ContoVincolato.h
#ifndef VINCOLATO_H
#define VINCOLATO_H
#include "ContoBancario.h"
class ContoVincolato:public ContoBancario {
private:
double tasso;
public:
ContoVincolato(double,double);
double calcolaInteresse();
};
#endif
ContoCorrente.h
#ifndef CORRENTE_H
#define CORRENTE_H
#include "ContoBancario.h"
class ContoCorrente : public ContoBancario {
private:
double costoOp;
public:
ContoCorrente(double,double);
void setCostoOp(double);
virtual void deposita(double);
virtual void ritira(double);
};
#endif
теперь, в моем главном файле я» ve создал вектор p ointer в базовом классе, что точка экземплярам 2 класса:
ContoVincolato c1(2500, .05);
ContoCorrente c2 (1500, 1.5);
vector <ContoBancario *> conti(2);
conti[0]=&c1;
conti[1]=&c2;
таким образом я получаю доступ к переопределены виртуальной функции только с помощью указателей с
for (size_t i=0;i<conti.size();i++){
conti[i]->ritira(500);
conti[i]->deposita(350);
}
Но: я не могу понять, как используйте метод, который я не переопределял в ContoVincolato.h, conti[0]->calcolaInteresse();
дает ошибку компилятора:
класс ContoBancario не имеет члена по имени 'calcolaInteresse'.
Как я могу это решить?
Вы решить эту проблему, разработав классы правильно, вместо того, чтобы пытаться найти способ взломать вокруг плохой дизайн класса. –
Это не единственная ошибка компилятора. Не существует метода 'ritira', выставленного из' ContoBancario', и не существует метода «депозита». Существует * метод 'deposit', поэтому, возможно, последняя является простой опечаткой (что постоянно меня смешивает в обстоятельствах, когда нужно делать резку/вставку, а не встроенную разработку кода в орган вопроса). – WhozCraig
Дана конструкция класса, может меняться – RagingLeviathan