【发布时间】:2015-10-24 08:15:36
【问题描述】:
我在 C++ 中有这两个类
Problema 这是我的超类
class Problema
{
protected:
string tipo;
int N;// GT1 # vertex ; SP5
int M;// GT1 # edges ; SP5
int K;// GT1 covering ; SP5
Problema *Hijo;
public:
//void readProblema(std::ifstream& file); // Lee un problema de un archivo
void Print();
Problema(std::string name);
Problema();
int geneSize(); // tama˜no del gen
float fitness(gene x); // c´alculo del fitness
std::string name; // hilera que indica el nombre del problema
void readProblema(std::ifstream& file);
Problema* getHijo(){return Hijo;}
string getTipo(){return tipo;}
int getN(){return N;}
int getM(){return M;}
int getK(){return K;}
int toint(std::string s);
};
和GT1,它是Problema的子类
class GT1 : public Problema
{
public:
void Print();
GT1(int N,int M, int K,int **arcos);
int** getArcos(){return arcos;}
private:
int **arcos;
};
如果我想这样做,调用getArcos() 方法的正确方法是什么:
Problema *Prob= new Problema();
Prob->Hijo = new GT1(X,Y,Z);
Problema *P = Prob->getHijo();
int **arcos = (GT1)P->getArcos();
【问题讨论】:
-
应该是
static_cast<GT1*>(P)->getArcos();。但我不相信你的整体设计。 -
...他说,无视繁重的警告... :)
-
这肯定会导致难以诊断出沿线某处的问题。
标签: c++ inheritance casting