que tienen una tarea que me pide que haga lo siguiente:Uso de plantillas en C++
Diseño una clase de plantilla llamada FlexArray que ofrece variedad flexibles índices. El usuario de la clase puede establecer el índice inferior y el índice superior cuando se declara el objeto.
Ejemplos de código de usuario:
FlexArray un (1,5); // el índice más bajo es 1 y el índice superior es 5 FlexArray b (-5, 10); // índice inferior es -5 y el índice superior es 10
proporcionar las siguientes funciones para su clase:
- constructor predeterminado
- constructor parametrizado en el que el usuario especifica menor índice y el índice superior
- destructor
- constructor de copia
- operador de asignación
- operador [] sobrecargado con una semántica similar a [] ya utilizado con matrices incorporadas.
Los errores en las condiciones de PRE se pueden manejar con sentencias de afirmación o try/catch blocks. No hay cambio de tamaño de la matriz ofrecida. Los subíndices deben estar dentro del rango.
El libro no es realmente útil para crear plantillas. Esperaba que alguien me diera alguna dirección sobre este problema y para ver si mi código está en el camino correcto. He tratado de iniciar este problema por el alcance muy limitado de los libros y diferentes recursos en línea y tengo:
#ifndef H_templates
#define H_templates
#include <iostream>
using namespace std;
template <typename T>
class FlexArray
{ public:
FlexArray(); // POST: empty FlexArray
FlexArray(LI,UI); // POST: Parameterized Constructor
~FlexArray(); // POST: destructor
CopyArr(Array* sourceArray, Array* destinationArray, size); // POST: Copies array
//Overloading the assignment operators to add arrays(?) Unsure if
// this is what is meant by the original question
FlexArray operator+
(const FlexArray& otherFlexArray) const;
//Overload the operator +
FlexArray operator-
(const FlexArray& otherFlexArray) const;
//Overload the operator -
FlexArray operator[]
(const FlexArray& otherFlexArray) const;
//Overload the operator []
private:
T FlexArray[size]; // Flex array
int size; // number of items Array
int LI; //Lower Index
int UI; //Upper Index
};
template <typename T>
FlexArray<T>::FlexArray()
// POST: empty FlexArray
{ size = 0; }
template <typename T>
FlexArray<T>::~FlexArray()
// POST: destructor
{ }
template <typename T>
FlexArray<T>::CopyArr(Array* sourceArray, Array* destinationArray, size)
//Pre: Takes 3 arguments, the original array, the array to copy too, and, the size of array
// POST: Copies the array
{
for(int i=0; i<size; i++){
sourceArray[i] = destinationArray[i]
}
}
#endif
El operador de asignación es 'operator ='. –
+1 para declarar la tarea! – Marlon
Una plantilla en C++ es una familia de objetos, con las mismas características pero que aloja diferentes objetos. Por ejemplo, use plantillas para apilamientos, colas, listas. NO PARA COSAS QUE TIENEN "UNA RELACIÓN CON; (como formas/rectángulos/cuadrados/círculos ...) –