c'est la définition d'en-tête.ne comprend pas cette utilisation de assert dans cette classe
#ifndef ENTITY_H
#define ENTITY_H
//------------------------------------------------------------------------
//
// Name: BaseGameEntity.h
//
// Desc: Base class for a game object
//
// Author: Mat Buckland 2002 ([email protected])
//
//------------------------------------------------------------------------
#include <string>
#include "messaging/Telegram.h"
class BaseGameEntity
{
private:
//every entity must have a unique identifying number
int m_ID;
static int m_iNextValidID;
void SetID(int val);
public:
BaseGameEntity(int id)
{
SetID(id);
}
virtual ~BaseGameEntity(){}
//all entities must implement an update function
virtual void Update()=0;
//all entities can communicate using messages. They are sent
//using the MessageDispatcher singleton class
virtual bool HandleMessage(const Telegram& msg)=0;
int ID()const{return m_ID;}
};
#endif
/////////////// here begins the cpp definition
#include "BaseGameEntity.h"
#include <cassert>
int BaseGameEntity::m_iNextValidID = 0;
void BaseGameEntity::SetID(int val)
{
//make sure the val is equal to or greater than the next available ID
assert ((val >= m_iNextValidID) && "<BaseGameEntity::SetID>: invalid ID");
m_ID = val;
m_iNextValidID = m_ID + 1;
}
Qu'est-ce que la vérification d'instruction assert dans ce cas? Et pourquoi l'utilisation de ":" après SetID dans assert déclaration? Je connais l'utilisation de: initialiser des éléments via un constructeur? Mais cet usage est nouveau pour moi.
Je ne vois pas le point de l'affirmation. Cela réussira toujours. –
S'il vous plaît ne pas poser cinq questions indépendantes en une. –
Etes-vous sûr d'avoir correctement copié le code? Il y a beaucoup de petites erreurs telles que confondre 'ID' et' m_ID'. En outre, je ne peux pas voir ':?'. – 5gon12eder