Ошибка "нет соответствующей функции для вызова" при попытке отображения
У меня есть следующий класс, написанный для описания типа даты утконоса, и у меня возникают проблемы при попытке отобразить результаты. Это основная функция, в которой у меня возникли проблемы с отображением выходных данных.
#include "Platypus.h" #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { Platypus p1('F', 6.5, 2, 'B', true, true); Platypus p2('M', 10.0, 3, 'C', true, true); p1.display(); p1.age_me(2); p1.display(); p1.eat(); p1.display(); p2.display(); p2.age_me(3); p1.fight(p2); p1.display(); Platypus p3.hatch; }
Я получаю сообщение об ошибке, что нет соответствующей функции для вызова функции Platypus::display() и что ни одна из моих функций не существует в классе Platypus. Я действительно не знаю, с чего начать, чтобы исправить это. У меня действительно есть заголовочный файл, но я его оставил, так как он уже прилично длинный. Я довольно новичок в C++ и классах, поэтому любая помощь будет очень признательна.
#include <iostream> #include <cstdlib> #include <ctime> #include "Platypus.h" using namespace std; #ifndef PLATYPUS_H_INCLUDED #define PLATYPUS_H_INCLUDED class Platypus { public: Platypus::Platypus() : weight(0.0), age(0), name('A'), gender('M'), alive(false), mutant(false) { } Platypus::Platypus(char gender, float weight, short age, char name, bool alive, bool mutant) { bool alive = true; bool mutant = false; myWeight = weight; myAge = age; myName = name; myGender = gender; myAlive = alive; myMutant = mutant; } unsigned Platypus::getWeight() const; { return myWeight; } unsigned Platypus::getAge() const; { return myAge; } unsigned Platypus::getName() const; { return myName; } unsigned Platypus::getGender() const; { return myGender; } unsigned Platypus::getAlive() const; { return myAlive; } unsigned Platypus::getMutant() const; { return myMutant; } void Platypus::display(ostream & out) const { out << "Name is" << myName << endl << "Gender is" << myGender << endl << "Weight is" << myWeight << "lbs" << endl << "Age is" << myAge << "months" << endl; if (myAlive == true) { out << "Alive: " << "Yes" << endl; } else { out << "Alive: " << "No" << endl; } if (myMutant == true) { out << "Mutant : " << "Yes" << endl; } else { out << "Mutant: " << "No" << endl; } } void age_me(short inc) { myAge += inc; srand(time(NULL)); int rand_mut = (rand() % 100) + 1; if(rand_mut <= 2) { myMutant = true; } if(rand_mut <= 10 * weight) { myAlive = false; } if(weight >= 10) { myAlive = false; } } void fight(Platypus & p) { srand(time(NULL)); int fight_ratio = (getWeight() / p.getWeight()) * 50; int random_ratio = (rand() % 100) + 1; if(random_ratio < fight_ratio) p.setmyAlive = false; { } else { myAlive = false; } } void eat() { if(myAlive == true) { float rand_weight = 5.0 + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX / (0.5 - 5))); weight = weight + rand_weight; } } void hatch() { srand(time(NULL)); char newName = 97 + rand() % 26; alive = true; //alive defaulted to true mutant = false; age = 0; int rand_gender = rand() % 50 + 1; if(rand_gender <= 25) { gender = 'M'; } else { gender = 'F'; } float newrand_weight = 1.0 + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX / (0.5 - 1))); weight = newRand_weight; char newName = 97 + rand() % 26; name = newName; } } #endif
Что я уже пробовал:
Передача p1 в параметрах дисплея