Мои виртуальные функции не называются (предупреждение C4793)C++

Программы на C++. Форум разработчиков
Anonymous
Мои виртуальные функции не называются (предупреждение C4793)

Сообщение Anonymous »

Поскольку у меня есть это предупреждение, мои виртуальные функции больше не работают.
Это как если бы они не существуют. Программа просто игнорирует их ... но она не рухнет. < /P>

Код: Выделить всё

Warning C4793: 'FProtocol::`vcall'{16}'': function compiled as native:
Non-clrcall vcall thunks must be compiled as native
Это происходит только с компилятором CL и в проекте Visual Studio (2022). /> Так что я думаю, что это должно быть что -то связанное с настройками проекта в VisualStudio.#pragma unmanaged
< /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

Вернуться в «C++»