这是可能的:
将常量变量更改为非常量
我正在创建一个全新的字符串类,我的构造函数看起来像这样
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'
如果这有所不同,我使用没有IDE的mingw编译器
我正在通过命令提示符
进行编译我认为这可能是您需要的所有信息
告诉我你是否还需要
答案 0 :(得分:4)
你的构造函数很好 - 输入应该是const。
副本可以是非常量的,没问题。
#include <string.h>
class A {
public:
A(const char* string)
: a(strdup(string))
{}
char* a;
};
这里我使用strdup制作副本。你在用什么?
答案 1 :(得分:2)
我相信编译器认为您正在尝试更改您分配的字符串。因为它无法改变,这就是为什么它在抱怨。您是否复制了字符串以进行更改?
答案 2 :(得分:1)
我没有看到问题。保持构造函数签名不变,但将内部变量设为非const并将其复制。在func的开头复制它,然后使用该变量。