[英]const to non-const c++
這可能嗎:
將常量變量更改為非常量
我正在制作一個全新的字符串類,我的構造函數如下所示
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編譯器
我正在通過命令提示符進行編譯
我認為這就是您可能需要的所有信息
告訴我是否需要
您的構造函數很好-輸入應為const。
副本可以是非常量的,沒問題。
#include <string.h>
class A {
public:
A(const char* string)
: a(strdup(string))
{}
char* a;
};
在這里,我使用strdup進行復制。 你在用什么
我相信編譯器認為您正在嘗試更改要從其分配的字符串。 由於無法更改,這就是它抱怨的原因。 您是否復制了字符串以進行更改?
我沒看到問題。 保持構造函數簽名不變,但使內部變量為非const並將其復制過來。 將其復制到func的開頭,然后使用該變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.