Utilidad para albergar "numeros" que pueden tener minimo y maximo, por
ejemplo un sistema de particulas tiene que crear particulas con valores
aleatorios para el color digamos entre 0 y 255.
/*
CMinMax.h
*/
#pragma once
#include "Types.h"
template <class T> class CMinMax
{
private:
//
//members
//
T m_Min;
T m_Max;
public:
//
//life
//
CMinMax()
{
Clear ();
}
CMinMax (T tMin, T tMax)
{
m_Min = tMin;
m_Max = tMax;
}
~CMinMax()
{
}
//
//operators
//
inline bool operator == (const CMinMax <T> &minmax)
{
return (m_Min == minmax.m_Min && m_Max == minmax.m_Max) ?
true : false;
}
inline bool operator != (const CMinMax <T> &minmax)
{
return (*this == minmax) ? false : true;
}
//
//operations
//
inline CMinMax <T>& operator = (const CMinMax <T> &minmax)
{
m_Min = minmax.m_Min;
m_Max = minmax.m_Max;
return *this;
}
inline void Clear (void) { m_Min = T(); m_Max = T(); }
inline void SetMinMax (const T min, const T max) { m_Max = max;
m_Min = min; }
inline T GetRange(void) { return(T)(abs((int)(m_Max-m_Min))); }
inline T GetRandom (void)
{
return (T)(m_Max-m_Min) > 0 ? rand ()%(int)(m_Max-m_Min) +
m_Min : rand ()%(int)(1) + m_Min;
}
};
Éste código fue enviado por Corday el 9 de enero de 2003
Si quieres enviar tu propio código hazlo a eth_cotd@lycos.es
Supongo q esta clase tiene snetido para tipos de datos basicos como float, int , char y algunos como vector, pero para mi clase CSocket no creo q tenga mucha utilidad.
Me gusta mucho tu organizacion de codigo, clara y limpia :DDD
saludos
¿Qué es #pragma once?
#pragma once
es para indicar al compilador que incluya el header sólo una vez.
Saludos.
No es standar, hay quien frefiere seguir usando
#ifndef __maxmin__
#define __maxmin__
// Codigo
#endif
En VisualC++ #pragma once acelera el tiempo de compilación de un proyecto.
#pragma once hace que no se abra ese fichero si ya ha sido añadido a la compilación.... los #def hacen que se abra y no incluya nada, y se cierre. En un proyecto muy grande(o con muchas dependencias físicas) puede reducir mucho el tiempo de compilación
PD: Eso es lo que recuerdo de no sé donde, algo será del Lakos(Large-Scale C++ Software Design) y el resto de leer por ahí
Independientemente de las ayudas del compilador en effective c++ explica como reducir las dependencias entre archivos y q la compilacion/recompilacion sea mas eficiente.
saludos
Ya, y en el Lakos.
Pero partiendo de que hayas cuidado las dependencias físicas, en Visual C++ con el #pragma once en un programa grande te compilará más rápido. Se puede meter en un macro ....
#define HEADER_BEGIN(HeaderName) { #ifdef_VISUALC++ #pragma / once #else #ifndef_HeaderName##_H #define _HeaderName##_H}
#define HEADER_END(HeaderName){#ifndef _VISUALC++ #endif}
Habría que ver que código distingue cada compilador, pero algo así que sale de mi cabeza justo antes de irme a la cama.
Todo ésto se puede automatizar fácilmente, en el Visual se podrá. En herramientas CASE tipo Together o Rational Rose es muy cómodo
Umh podrias decir algo mas de ese tipo de herramientas? he oido hablar de ellas pero no se para q valen realmente xD
saludos
CitarUmh podrias decir algo mas de ese tipo de herramientas? he oido hablar de ellas pero no se para q valen realmente xD
Sirven para que te toquen las narices en las prácticas de Ingeniería del Software...
Bye
Muy buena esa definicion, Daventry, muy buena :ojo:
entonces no sirve para nada no? XDD
Sí que sirven, pero el Rational cuesta todo lo que pueda cobrar durante mi vida hasta que me jubile. Bueno... tal vez no tanto, pero más o menos... :I
sync