Вот полный пример, иллюстрирующий, почему используется виртуальный метод.
#include <iostream>
using namespace std;
class Basic
{
public:
virtual void Test1()
{
cout << "Test1 from Basic." << endl;
}
virtual ~Basic(){};
};
class VariantA : public Basic
{
public:
void Test1()
{
cout << "Test1 from VariantA." << endl;
}
};
class VariantB : public Basic
{
public:
void Test1()
{
cout << "Test1 from VariantB." << endl;
}
};
int main()
{
Basic *object;
VariantA *vobjectA = new VariantA();
VariantB *vobjectB = new VariantB();
object=(Basic *) vobjectA;
object->Test1();
object=(Basic *) vobjectB;
object->Test1();
delete vobjectA;
delete vobjectB;
return 0;
}
У меня есть программа-искатель, и несколько мгновений назад я получил то же исключение. Причина в моем случае заключается в том, что срок действия сертификата безопасности (на сайте, который я просканировал).
Быстрое исправление в моем случае заключалось в добавлении этой строки кода:
ServicePointManager.ServerCertificateValidationCallback = new
RemoteCertificateValidationCallback
(
delegate { return true; }
);
Примечание: этот взлом может представлять угрозу безопасности