Это как если бы они не существуют. Программа просто игнорирует их ... но она не рухнет. < /P>
Код: Выделить всё
Warning C4793: 'FProtocol::`vcall'{16}'': function compiled as native:
Non-clrcall vcall thunks must be compiled as native
< /code>
По сути, проблема возникает, когда я использую указатели на виртуальные функции членов (шаблоны и неэтапные). < /p>
К сожалению, я не смог воспроизвести ошибку с помощью этого кода для упомянутых компилятов. Но я надеюсь, что это поможет вам понять, о чем я говорю. < /P>
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
#include
#include
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class FObject
{
public :
virtual void Func() = 0;
};
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class B
{
public:
template
static void FuncA(T *Obj, void (T::*FPTR)())
{
(Obj->*FPTR)();
}
static void FuncB(std::function f)
{
f();
}
};
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class A : public FObject
{
public:
A()
{
B::FuncA(this, &A::Func);
auto x = std::bind(&A::Func, this);
B::FuncB( x );
}
virtual void Func() override
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/796 ... ning-c4793
Мобильная версия