Ошибка при попытке использовать объект в качестве атрибута класса - PullRequest
0 голосов
/ 20 июня 2019

У меня есть несколько классов в моей программе, но сейчас я сосредоточен на классах Loan и LibraryItem.Я намерен использовать объект LibraryItem в качестве атрибута класса Loan.Когда я пытаюсь это сделать, я получаю сообщение об ошибке.

Я просмотрел похожие примеры в книгах и в Интернете, но не смог найти проблему.

LibraryItem.h

#ifndef LIBRARYITEM_H
#define LIBRARYITEM_H

#include <string>

using namespace std;

class LibraryItem
{
    public:
        LibraryItem(int id, string t, int y);
        int getID();
        string getTitle();
        int getYear();
        void setCheckedOut(bool c);
        bool isCheckedOut();

    private:
        int itemID;
        string title;
        int year;
        bool checkedOut;
};

#endif // LIBRARYITEM_H LibraryItem(int id, string t, int y);

LibraryItem.cpp

#include "LibraryItem.h"

LibraryItem::LibraryItem(int id, string t, int y)
{
    //ctor
    itemID = id;    title = t;  year = y;
    checkedOut = false;
}

int LibraryItem::getID()
{
    return itemID;
}

string LibraryItem::getTitle()
{
    return title;
}

int LibraryItem::getYear()
{
    return year;
}

void LibraryItem::setCheckedOut(bool c)
{
    checkedOut = c;
}

bool LibraryItem::isCheckedOut()
{
    return checkedOut;
}

Loan.h

#ifndef LOAN_H
#define LOAN_H

#include <string>

#include "LibraryItem.h"

using namespace std;

class Loan
{
    public:
        Loan();
        Loan(int id, LibraryItem i, string bdate, string ddate);

        int getID();
        string getBorrowDate();
        string getDueDate();
        LibraryItem getItem();

    private:
        int loanID;
        string borrowDate;
        string dueDate;
        LibraryItem item;
};

#endif // LOAN_H

Loan.cpp

#include "Loan.h"

Loan::Loan()
{

}

Loan::Loan(int id, LibraryItem i, string bdate, string ddate)
{
    loanID = id;    borrowDate = bdate; dueDate = ddate;
    item = i;
}

int Loan::getID()
{
    return loanID;
}

string Loan::getBorrowDate()
{
    return borrowDate;
}

string Loan::getDueDate()
{
    return dueDate;
}

LibraryItem Loan::getItem()
{
    return item;
}  //ctor

В строке 3 Loan.cpp я прихожусо следующей ошибкой: ошибка: не найдена подходящая функция для вызова LibraryItem :: LibraryItem () '

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Ваш конструктор Loan должен инициализировать по умолчанию его item перед вводом тела, но LibraryItem не имеет конструктора по умолчанию.

Использовать список инициализаторов для инициализации члена:

Loan::Loan(int id, LibraryItem i, string bdate, string ddate)
  : loanID(id),
    borrowDate(bdate),
    dueDate(ddate),
    item(i)  
{
    // Intentionally empty.
}
1 голос
/ 20 июня 2019

У вас есть определение для конструктора

LibraryItem::LibraryItem(int id, string t, int y)

Но вы никогда не объявляли эту функцию в своем определении класса.Добавьте эту строку в определение вашего класса

LibraryItem(int id, string t, int y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...