簡體   English   中英

const到非const c ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM