Por qué no puedo hacer esto:puntero constante asignar a un puntero
char* p = new char[10];
void SetString(char * const str)
{
p = str;
}
SetString("Hello");
Tengo un puntero constante a un char, ¿por qué no puedo asignar el puntero constante a otro puntero?
Parece ilógico, ya que al asignarlo a otro puntero, no está violando esencialmente la const-ness del puntero de char. ¿O eres tu?
EDIT: Cuando compilo este que dice "error C2440: '=': no se puede convertir de 'char * const * __ W64' a 'char *'"
(estoy tratando de entender un concepto . de un libro que estoy leyendo simplemente no puede obtener el código para compilar
cÓDIGO:.
int _tmain(int argc, _TCHAR* argv[])
{
MyString *strg = new MyString(10);
strg->SetString("Hello, ");
MyString *secondstr = new MyString(7);
secondstr->SetString("Tony");
strg->concat(*secondstr, *strg);
}
CPP ARCHIVO:
#include "MyStringClass.h"
#include <string.h>
#include "stdafx.h"
#include "MyStringClass.h"
void MyString::concat(MyString& a, MyString& b)
{
len = a.len + b.len;
s = new char[len + 1];
strcpy(s, a.s);
strcat(s, b.s);
delete [] s;
}
void MyString::SetString(char * const str)
{
s = str;
}
MyString::MyString(int n)
{
s = new char[n+1];
s[n+1] = '\0';
len = n;
}
encabezado del archivo:
#include <string.h>
#include <stdio.h>
class MyString
{
private:
char* s;
int len;
public:
MyString(int n = 80);
void SetString (char * const str);
void concat (MyString& a, MyString& b);
};
No hay nada de malo en ese código, per se. ¿Por qué no mostrarnos código real con errores de compilación reales para resolver un problema real? – GManNickG
En respuesta a la edición, ¿qué es "compilar esto" ... no ha publicado código compilable. :) Danos un pequeño fragmento de lo que estás compilando, exactamente. – GManNickG
Oh mi. Este código infringe dos principios básicos de programación en C++ para cada línea. No sabría por dónde empezar a decirte lo que está mal con eso. ¿De qué libro estás aprendiendo C++? Sea lo que sea, búrbalo y eche un vistazo a [La guía y la lista definitiva de C++ Book] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) antes de escribir cualquier otra línea – sbi