1

我想创建一个接受字符串的新类,并将其转换为字符数组,然后将其保存到其私有变量中。因此,我正在尝试转换const char*为,char*因为我希望能够修改其内容。

class MyClass {
public:
    MyClass (const char* input) {
        // convert input to char* and assign it to carray
    }
private:
    char carray[];
};

int main() {
    MyClass mc = "StackOverflow";
}

我修改了构造函数以各种方式获取参数的方式(string& inputinput.c_str()等),但它们都失败了,并出现以下错误之一。

error: conversion from ‘const char [14]’ to non-scalar type ‘MyClass’ requested

error: request for member ‘c_str’ in ‘s’, which is of non-class type ‘const char*’

error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]

error: incompatible types in assignment of ‘const char*’ to ‘char [0]’

我看了几个关于 SO 的例子,但我仍然无法弄清楚。我怎样才能做到这一点?

4

1 回答 1

10

您不应该 - 如果原件确实是const,修改其内容会导致未定义的行为。

使用 astd::string代替:

class MyClass {
public:
    MyClass (const std::string& input) : carray(input){
    }
private:
    std::string carray;
};

一般来说,在处理此类问题时,您甚至不应该考虑摆脱const,而应首先考虑为什么存在const,然后从那里开始解决问题。

于 2013-06-25T16:02:05.070 回答