Я создаю игру на С ++.У меня есть класс с именем eggAI и слушатель сокета, работающий в потоке.При приеме гнезда яйцо движется вперед.Поэтому я создаю экземпляр класса eggAI и перемещаю его вперед (потому что функция слушателя сокета должна быть статической).Вот что нужно сделать при приеме сокета
eggAI *mn = new eggAI();
mn->bMoveForward(true);
Моя игра запущена, но яйцо не движется при приеме сокета.Я попытался отладить и обнаружил, что проблема в mn-> bMoveForward (true), отладка показала мне 0x003baf00 скалярное удаление деструктора '(unsigned int) .Обратите внимание, что в eggAI.h я определил конструктор и деструктор, а в eggAI.cpp я реализовал их:
// eggAI.h
#ifndef __eggAI_h__
#define __eggAI_h__
//------------------------------------------------------------------------------
#include "S3DX/S3DXAIModel.h"
#include "chasing_the_egg_Plugins.h"
#pragma comment(lib, "ws2_32.lib")
#include <winsock2.h>
#include <process.h>
#include <stddef.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
//------------------------------------------------------------------------------
S3DX_DECLARE_AIMODEL( eggAI )
{
public:
// Handlers:
//
S3DX_DECLARE_HANDLER( onInit );
S3DX_DECLARE_HANDLER( onMouseMove );
S3DX_DECLARE_HANDLER( onEnterFrame );
S3DX_DECLARE_HANDLER( onCaptureInput );
S3DX_DECLARE_HANDLER( onKeyboardKeyUp );
S3DX_DECLARE_HANDLER( onKeyboardKeyDown );
// States:
//
// Functions:
//
void createHUD ( );
void showMouse ( S3DX::AIVariable b = S3DX::nil );
static unsigned __stdcall socketing (void *pi);
void centerMouse ( );
void createDynamic ( );
void updateCharPos ( );
void updateDynamics ( );
static unsigned __stdcall direction (void *ea);
eggAI();
virtual ~ eggAI();
// Variables:
//
S3DX_DECLARE_VARIABLE( nSpeed );
S3DX_DECLARE_VARIABLE( hDynObj );
S3DX_DECLARE_VARIABLE( nGravity );
S3DX_DECLARE_VARIABLE( bMoveBack );
S3DX_DECLARE_VARIABLE( nCurAngleH );
S3DX_DECLARE_VARIABLE( nCurAngleV );
S3DX_DECLARE_VARIABLE( nDstAngleH );
S3DX_DECLARE_VARIABLE( nDstAngleV );
S3DX_DECLARE_VARIABLE( bMoveForward );
S3DX_DECLARE_VARIABLE( bCaptureInput );
};
//------------------------------------------------------------------------------
#endif // __eggAI_h__
//------------------------------------------------------------------------------
// eggAI.cpp
//------------------------------------------------------------------------------
#include "eggAI.h"
//------------------------------------------------------------------------------
// Common AIModel implementation
//
S3DX_IMPLEMENT_AIMODEL( eggAI )
eggAI::eggAI() { }
eggAI::~eggAI() { }
//------------------------------------------------------------------------------
// States mapping
//
S3DX_BEGIN_STATE_MAP( eggAI )
S3DX_END_STATE_MAP( eggAI )
//------------------------------------------------------------------------------
// Event handlers mapping
//
S3DX_BEGIN_HANDLER_MAP( eggAI )
S3DX_HANDLER( eggAI, onInit )
S3DX_HANDLER( eggAI, onMouseMove )
S3DX_HANDLER( eggAI, onEnterFrame )
S3DX_HANDLER( eggAI, onCaptureInput )
S3DX_HANDLER( eggAI, onKeyboardKeyUp )
S3DX_HANDLER( eggAI, onKeyboardKeyDown )
S3DX_END_HANDLER_MAP( eggAI )
//------------------------------------------------------------------------------
// Variables mapping
//
S3DX_BEGIN_VARIABLE_MAP( eggAI )
S3DX_VARIABLE( eggAI, nSpeed, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, hDynObj, S3DX_VARIABLE_TYPE_OBJECT )
S3DX_VARIABLE( eggAI, nGravity, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, bMoveBack, S3DX_VARIABLE_TYPE_BOOLEAN )
S3DX_VARIABLE( eggAI, nCurAngleH, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, nCurAngleV, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, nDstAngleH, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, nDstAngleV, S3DX_VARIABLE_TYPE_NUMBER )
S3DX_VARIABLE( eggAI, bMoveForward, S3DX_VARIABLE_TYPE_BOOLEAN )
S3DX_VARIABLE( eggAI, bCaptureInput, S3DX_VARIABLE_TYPE_BOOLEAN )
S3DX_END_VARIABLE_MAP( eggAI )
//------------------------------------------------------------------------------
Кажется, я что-то упустил