如何在成员初始化列表中为const char*类成员分配内存
How to allocate memory to const char* class member in member initialization list
如何在成员初始化列表中为const char*
类成员分配内存?
class A {
const char *member;
public:
A(const char *m);
}
A::A(const char *m):member(m) {
//I want to allocate memory to member in member initialization list
}
试试下面的
class A
{
const char *member;
public:
A(const char *m);
};
A::A(const char *m) : member( new char[std::strlen( m ) + 1] )
{
std::strcpy( member, m );
}
考虑数据成员member
本身不是常量。
或者你甚至可以这样写
#include <iostream>
#include <cstring>
struct A
{
const char *s;
A( const char *s ) : s( std::strcpy( new char[std::strlen( s ) + 1], s ) )
{
}
~A()
{
delete [] s;
}
};
int main()
{
A a( "Hello, World!" );
std::cout << a.s << std::endl;
return 0;
}
相关文章:
- 具有结构成员char数组的sscanf
- 无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
- 获取"rw_ssid"中成员"长度"的错误请求,该成员属于非类类型"char*"
- 没有'str'成员在 GCC 和 Clang 'std::basic_ostream<char>',但 MSVC 没有问题
- 使用 const char* 初始化 const ref 字符串成员时幕后会发生什么
- 成员引用基类型 'char' 不是 C++ 中的结构或联合
- 错误:请求成员 .. 是非类类型"char"
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 请求成员 'begin' in 'c' 中,它是非类类型 'char [101]' sort(c.begin(), c
- 如何初始化类的 char 成员变量?
- 将const char * const参数成员分配给新值
- 如何在班级成员中初始"static const char * []"?[C++]
- 返回类型 char* 的成员函数返回在 while 循环后包含不同字符串的地址
- 为什么 const char 数组成员的初始化在构造函数初始值设定项中不兼容
- 警告:ISO C++禁止将静态“constexpr char*”数据成员的字符串常量转换为“char*”
- 无法使用类型 'const char [X]' 的左值初始化类型 'const signed char *' 的成员子对象
- "static const char array"可以在 C 语言上包含变量成员吗
- C++ char* 作为类成员
- 如何将STD :: String的值复制到Char数组类型的结构成员
- 崩溃,如果使用向量删除了一个嵌入式容器的destructor中删除char*成员