无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
Cannot initialize a member subobject of type 'char *' with an lvalue of type 'const char *'
>我有以下内容:
数据.hpp
#include <stdio.h>
class Data{
private:
char* input_filename;
char* csv_filename;
public:
Data(const char* in_filename,const char* out_csv="output.csv");
};
#endif /* data_hpp */
和data.cpp
#include "data.hpp"
Data::Data(const char* in_filename,const char* out_csv): input_filename(in_filename), output_csv(out_csv)
{}
我收到错误:
Cannot initialize a member subobject of type 'char *' with an lvalue of type 'const char *'
如何初始化在构造函数中传递的两个字符数组?
char*
是一个"指向非常量char
的指针"。
const char*
是"指向常量char
的指针"。
你不能将const char*
分配给char*
,这是编译器抱怨的。 因此,您必须:
- 将
char*
成员更改为const char*
:
class Data{
private:
const char* input_filename;
const char* csv_filename;
public:
Data(const char* in_filename, const char* out_csv = "output.csv");
};
#include "data.hpp"
Data::Data(const char* in_filename, const char* out_csv):
input_filename(in_filename), csv_filename(out_csv)
{}
- 将
char*
成员更改为std::string
:
#include <string>
class Data{
private:
std::string input_filename;
std::string csv_filename;
public:
Data(const char* in_filename, const char* out_csv = "output.csv");
/* you can optionally change the constructor parameters to std::string, too...
Data(const std::string &in_filename, const std::string &out_csv = "output.csv");
*/
};
#include "data.hpp"
Data::Data(const char* in_filename, const char* out_csv):
input_filename(in_filename), csv_filename(out_csv)
{}
/* or:
Data::Data(const std::string &in_filename, const std::string &out_csv):
input_filename(in_filename), csv_filename(out_csv)
{}
*/
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何将整数分配给 char 类型的变量
- 将char类型指定给int以打印相应的ASCII字符
- 在 C++11 标准中,为什么要依赖 char 类型实现?
- 如何使用CIN将输入整数值获取到char类型变量中
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 不能将 "const char*" 类型的值分配给类型 "int" 的实体
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 'char' c++ 类型的数组中的最后一个符号
- C++:无法使用条件类型在模板函数中使用 'double' 类型的 lvalue 初始化 'char*' 类型的参数
- 不能将 "const char *" 类型的值分配给类型为 "LPSTR" 的实体
- 如何使用boost.asio读取整个Char类型的数据
- 如何从const char *类型字符串中删除新线字符
- 为什么允许将字符串文字分配给 C++ 中 char * 类型的指针
- 如何将 char 类型数组传递给函数并将第一个字符数组复制到第二个图表数组并使用 c++ 进行比较
- 在char*类型上使用static_cast获取地址,并获得24位和48位地址
- CIN使用char类型阵列
- 错误:“ const char*”类型的操作数和“ const char [7]”类型为二进制“操作员 ”