-3
私は2分子の可能性を計算する必要がある物理プロジェクトシミュレーションに取り組んでいます。タイプが引数のときにtypeidを避ける方法
、これは私が書くために考えたコードの一部です:
class Molecule
{
public:
double someBulshit;
virutal double Potential(const Molecule & mol);
}
class LC : public Molecule
{
public:
virtual double Potential(const Molecule & mol)
{
if(typeid(mol) ==typeid(LC))
return 1;// for the example
return 3;
}
}
class Col : public Molecule
{
public:
virtual double Potential(Molecule mol)
{
if (typeid(mol) == typeid(Col))
return 2;
return 3;
}
}
int main(int argc, char* argv[])
{
Molecule mol1 = new Col();
Molecule mol2 = new LC();
double my_potential = mol1.Potential(mol2);
printf ("%f",my_potential);
}
私はタイプIDを使用することは悪いことを聞いたが、私はそれを使用しなくてもそうする別の方法を見つける傾けます。 これはパフォーマンスにも影響され、typeididであると私は理解しました。
私は別の関数に分割してみました:
double Potential(const LC & mol);
double Potential(const Col & mol);
しかし、私は、多型と呼んでカント..
これはC++コードではありません。 – juanchopanza
私はそれをC# から変換しました。私はCPPで作業する必要があります。 しかし、その点は概念ではありません。 – pio
この問題が継承によって解決される強い理由はありますか?異なるタイプの分子にIDを割り当ててから、潜在的な2次元テーブルを作成することができます。これはできるだけ速くなるでしょう。 – geza