const to non-const c ++ - PullRequest
       14

const to non-const c ++

4 голосов
/ 19 ноября 2010

возможно ли это:

изменение постоянной переменной на непостоянную

Я создаю совершенно новый класс строк, и мой конструктор выглядит так

LString(const char string1[]) {/* whatever I do */}

Я бы не стал вводить ключевое слово const, но это единственный способ получить строки вроде

LString ls = "a string";

У меня будет много функций для изменения этой строки

, хотя я делаю копию этой строки, я все еще не могу преобразовать const в не const

возможно ли

если нет, может кто-нибудь придумать лазейку

хорошо, так что некоторые люди говорили, что нет проблем, вот мой код

#include <iostream>
#include <cstdlib>
using namespace std;
class LString
{
public:
LString(const char string1[]){
char s1[250] = {string1};
cout << "you constructed LString with a const string as a parameter";
}

};

возникают следующие ошибки

file.cpp: в конструкторе 'LString :: LString (const char *)':

file.cpp: 7: 24: ошибка: неверное преобразование из 'const char *' в 'char'

если это имеет значение, я использую компилятор mingw без IDE

Я компилирую через командную строку

Я думаю, это вся информация, которая вам может понадобиться

скажи мне, если тебе нужно больше

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

Ваш конструктор в порядке - ввод должен быть постоянным.

Копия может быть неконстантной, без проблем.

#include <string.h>
class A {
  public:
  A(const char* string)
    : a(strdup(string))
  {}
  char* a;
};

Здесь я использую strdup, чтобы сделать копию. Что вы используете?

2 голосов
/ 19 ноября 2010

Я считаю, что компилятор думает, что вы пытаетесь изменить строку, из которой вы назначаете. Так как это не может быть изменено, поэтому он жалуется. Вы сделали копию строки для внесения изменений?

1 голос
/ 19 ноября 2010

Я не вижу проблемы. Сохраните подпись конструктора как есть, но сделайте внутреннюю переменную неконстантной и скопируйте ее Скопируйте его в начале функции и затем поработайте с этой переменной.

...