-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