Мои виртуальные функции не называются (предупреждение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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