Después de tratar de hacer un poco más fácil el acceso a una clase de almacenamiento, terminé en una situación en la que no tengo mucho conocimiento. Y encontrar personas que intentan hacer lo mismo que yo no es fácil.C++ Plantilla de operador de subíndice de matriz
Lo que estoy tratando de hacer es tener una clase que almacene una matriz de valores como cadenas internamente, pero que permita la conversión de tipos simples desde el extremo del usuario. Lo que había planeado hacer es usar el operador de subíndice de matriz para devolver el tipo que especifiquen a través de una plantilla. Aunque suena mucho mejor de lo que funciona en la práctica. Aquí hay un ejemplo simple de lo que estoy haciendo, para darle una idea de cómo funciona .
class StringList
{
public:
template <typename T>
T operator[](const int i)
}
A partir de ahí, definiría algunas plantillas específicas, y cualquier usuario podría definir fácilmente más si es necesario. Pero, el mayor problema con esto es que no sé cómo llamar al operador del subíndice con una plantilla. Al principio asumí lo siguiente (que aparentemente no es correcto), considerando que es similar a la forma estándar de llamar a un método de plantilla.
StringList list;
T var = list<T>[0];
¿Alguien sabe la forma correcta de llamar al operador de subíndices como plantilla? O, ¿debería simplemente evitar hacer esto, y usar un método con nombre?
Me gustaría advertir sobre la sobrecarga de 'operator []' para este propósito, ya que los operadores sobrecargados se utilizan mejor cuando tienen significado sintáctico. Normalmente no escribes cosas como 'list [0]', y creo que la sobrecarga intelectual adicional no vale la pena. ¿Por qué no simplemente hacer un método 'get' y llamar a' list.get (0) '? –
templatetypedef
@templatetypedef Estoy totalmente de acuerdo. Era más que probable que me quedara con una función nombrada como get, teniendo en cuenta que ni siquiera entiendo cómo escribirías una plantilla como esta. Pero, tengo curiosidad por saber cómo se escribiría, independientemente de si alguna vez necesito usarlo. – TheCodeBroski