-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);
}
聽說使用typeid的是不好的,但我不能找到另一種方式,而無需使用它這樣做。 這也是性能敏感和typeid我知道typeid不推薦與它。
我試圖拆分到不同的功能:
double Potential(const LC & mol);
double Potential(const Col & mol);
但是,我不能叫他們多態..
這不是C++代碼。 – juanchopanza
我將它從C# 轉換而來,我需要它在CPP上工作。 但重點不在於它是這個概念的語言。 – pio
有沒有強烈的理由,這個問題可以通過繼承來解決?您可以將ID分配給不同類型的分子,然後創建一個潛在的2D表格。這將盡可能快。 – geza