Declaración de punteros
Publicado por celes (2 intervenciones) el 13/10/2007 15:13:49
Hola ¿cómo están? yo soy celes y estoy encantado de haber encontrado este excelente sitio. Hace rato que estoy estudiando el tema de punteros en c++. He visto que el tema se desarrolla ampliamente en http://www.zator.com/Cpp. Hay un punto en particular que me reprenta un problema con el dev-c++ 4.9.9.2, pero no con el Borland c++ 5.5.1. El problema lo tengo cuando quiero declarar un puntero que apunte a una matriz de punteros y pensé que alguno de ustedes podría ayudarme.
#include <iostream>
using namespace std;
/* Compilador: Borland C++ 5.5.1 for Win 32 (utilizar compi1.bat)
int main() { // =============
char* aP[] = {"Bien", "Regular", "Mal"};
char* (*aPp) [] = &aP; // M.2
int n = sizeof(aP) / sizeof(aP[0]);
int dir;
for(int i=0; i<n; i++) {
cout << **aPp << endl;
dir = reinterpret_cast<int> (aPp); // M.6bis
aPp = reinterpret_cast<char* (*)[]> (dir+4); // M.7
}
return 0;
}
La línea que me da error es la que está rotulada como M2 y el mensaje de error que me pone el dev-c++ es:
cannot convert `char* (*)[3]' to ` char* (*)[]' in initialization (en la linea 8, osea M2)
La página donde saque el ejemplo es está: http://www.zator.com/Cpp/E4_2_1c.htm
Mi pregunta concretamenta es como declarar un puntero que apunte a una matriz de punteros (que es lo que hago en la linea M2, ya que en el compilador de Borland funciona perfectamente, pero en el dev-c++ no).
PD: desde ya muchas gracias.
#include <iostream>
using namespace std;
/* Compilador: Borland C++ 5.5.1 for Win 32 (utilizar compi1.bat)
int main() { // =============
char* aP[] = {"Bien", "Regular", "Mal"};
char* (*aPp) [] = &aP; // M.2
int n = sizeof(aP) / sizeof(aP[0]);
int dir;
for(int i=0; i<n; i++) {
cout << **aPp << endl;
dir = reinterpret_cast<int> (aPp); // M.6bis
aPp = reinterpret_cast<char* (*)[]> (dir+4); // M.7
}
return 0;
}
La línea que me da error es la que está rotulada como M2 y el mensaje de error que me pone el dev-c++ es:
cannot convert `char* (*)[3]' to ` char* (*)[]' in initialization (en la linea 8, osea M2)
La página donde saque el ejemplo es está: http://www.zator.com/Cpp/E4_2_1c.htm
Mi pregunta concretamenta es como declarar un puntero que apunte a una matriz de punteros (que es lo que hago en la linea M2, ya que en el compilador de Borland funciona perfectamente, pero en el dev-c++ no).
PD: desde ya muchas gracias.
Valora esta pregunta


0