使用构造函数初始化类中的字符串

时间:2019-06-17 13:40:42

标签: visual-c++

我正在创建一个具有两个成员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

1 个答案:

答案 0 :(得分:1)

错误消息很清楚。变量'name'被声明为const char *,但分配给它的值仅是char *,即缺少const-ness,因此引发类型不兼容错误。 请,google指向const值的指针以及如何使用它们。 也许检查this tutorial