我正在创建一个具有两个成员string和int的类 我想使用构造函数来初始化这两个成员以使用它们。
#pragma once
#include <string>
#include <iostream>
using namespace std;
class donation_1
{
public:
//string name;
const char* name;
int donation_amount;
const static size_t string_size = sizeof(string);
const static size_t int_size = sizeof(int);
donation_1(char* name_1 = "Noname", int amount = 0) : name(name_1), donation_amount(amount) {};
};
int main()
{
fstream file;
file.open("donation_total1.txt", ios_base::app);
if (file.is_open())
{
donation_1("xxxx", 20).writedata(file);
donation_1("yyyy", 30).writedata(file);
donation_1("zzzz", 40).writedata(file);
donation_1("MMMM", 50).writedata(file);
donation_1("BBBB", 60).writedata(file);
file.close();
}
else
{
cout << "file couldn't be opened" << endl;
}
return 0;
}
我想使用构造函数初始化将用于更新文件的类变量,但是,我得到的是此错误。该错误与初始化字符串类成员有关。
严重性代码描述项目文件行抑制状态 错误(活动)E0310类型“ const char *”的默认参数与类型“ char *”的参数不兼容Stream_File_Lab D:\ INVSPRIVATE \ C ++ \ Projects \ Stream_File_Lab \ donation_1.h 17
答案 0 :(得分:1)
错误消息很清楚。变量'name'被声明为const char *,但分配给它的值仅是char *,即缺少const-ness,因此引发类型不兼容错误。 请,google指向const值的指针以及如何使用它们。 也许检查this tutorial