инициализация строки в классе с помощью конструктора - PullRequest
0 голосов
/ 17 июня 2019

Я создаю класс, который имеет два члена 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 Ответ

1 голос
/ 17 июня 2019

Сообщение об ошибке делает это довольно ясно. Переменная 'name' объявляется как const char *, но ей присваивается только char *, т. Е. Константа отсутствует, поэтому возникает ошибка несовместимости типов. Пожалуйста, Google для указателя на значение const и как их использовать. Может быть, проверить этот учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...