我想创建一个接受字符串的新类,并将其转换为字符数组,然后将其保存到其私有变量中.所以,我试图转换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";
}
Run Code Online (Sandbox Code Playgroud)
我修改的构造是如何发生以各种方式(参数string& input
,input.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]’
Run Code Online (Sandbox Code Playgroud)
我看了几个关于SO的例子,但我还是想不通.我怎样才能做到这一点?
Luc*_*ore 10
你不应该 - 如果原件确实如此const
,修改其内容会导致未定义的行为.
用一个std::string
代替:
class MyClass {
public:
MyClass (const std::string& input) : carray(input){
}
private:
std::string carray;
};
Run Code Online (Sandbox Code Playgroud)
在一般情况下,接近这种问题的时候,你应该别想摆脱的const
,而是想想为什么在const
有摆在首位,并解决从那里开始的问题.
归档时间: |
|
查看次数: |
4957 次 |
最近记录: |