Довольно новый для C ++, мне было дано задание, которое в основном касается использования двух разных классов, однако при создании моих заголовочных файлов и файлов c ++ и попытке компилирования я получаю сообщение об ошибке: нет соответствующей функции для вызова 'Владелец :: Владелец () . Так как я не очень знаком с C ++, я предполагаю, что эта проблема связана с моими конструкторами и способом, которым я пытаюсь их вызывать, мое назначение подробно описывает то, о чем я думаю, но моя проблема заключается в том, чтобы понять, что именно должно быть сделано. Ниже я приведу подробные сведения о назначении, а также код и ошибку компиляции. Извините за всю информацию, которую я только что застрял с этой проблемой на некоторое время, и я не могу найти решение.
Транскрибированная ошибка В конструкторе 'Dog :: Dog (std :: __cxx11 :: string, int)': Dog. cpp: 23: 46: ошибка: нет подходящей функции для вызова ' Owner :: Owner () 'Dog :: Dog (std :: string unsetBreed, int unsetAge) {
Сведения о назначении
Теперь вы напишет программу, которая состоит из двух классов, класса Dog и класса Owner. Их спецификация показана на диаграмме UML ниже. Обратите внимание, что в нашем дизайне у каждой собаки есть член класса Owner. Владелец класса является неизменным, как упомянуто выше. Неизменяемый класс - это просто класс, члены которого не могут быть изменены (видоизменены) после создания объекта. Следовательно, класс Owner не имеет никаких методов установки. Атрибуты класса владельца должны быть установлены во время создания (в конструкторе владельца). Вы будете вызывать конструктор Владельца из конструктора Собаки. Не забудьте сделать это внутри каждого конструктора в классе Dog.
Dog.h File
#ifndef DOG_H_INCLUDED
#define DOG_H_INCLUDED
#include <iostream>
#include "Owner.h"
class Dog {
//-----------------------//
private:
std::string breed;
int age;
Owner owner;
static int dogCount;
//-----------------------//
public:
Dog();
Dog(std::string, int);
std::string getBreed();
int getAge();
void setBreed(std::string);
void setAge(int);
void printDogInfo();
int getDogCount();
};
#endif // DOG_H_INCLUDED
Владелец.h Файл
#ifndef OWNER_H_INCLUDED
#define OWNER_H_INCLUDED
#include <iostream>
class Owner {
//-----------------------//
private:
std::string name;
int age;
//-----------------------//
public:
Owner(std::string, int);
std::string getName();
int getAge();
//-----------------------//
};
#endif // OWNER_H_INCLUDED
Собака. cpp Файл
#include <iostream>
#include "Owner.cpp"
#include "Owner.h"
#include "Dog.h"
//---------------SETTERS------------------//
void Dog::setBreed(std::string dogBreed){dogBreed = breed;}
void Dog::setAge(int dogAge){dogAge = age;}
//--------------GETTERS------------------//
std::string Dog::getBreed(){return breed;}
int Dog::getAge(){return age;}
int Dog::getDogCount(){return dogCount;}
//--------------OTHERS-------------------//
Dog::Dog(std::string unsetBreed, int unsetAge){
Owner::Owner(std::string unsetName, int unsetOwnerAge);
Dog::setBreed(unsetBreed);
Dog::setAge(unsetAge);
}
void Dog::printDogInfo(){
Dog::getBreed();
Dog::getAge();
}
Владелец . cpp Файл
#include <iostream>
#include "Owner.h"
#include "Dog.h"
//--------------GETTERS------------------//
int Owner::getAge(){return age;}
std::string Owner::getName(){return name;}
//--------------OTHERS-------------------//
Owner::Owner(std::string unsetName, int unsetOwnerAge){
Owner::getName();
Owner::getAge();
}