Ich benutze Codeblöcke v16 *Klasse Zusammensetzung Verwirrung
ich diesen Fehler, und ich kann nicht herausfinden, wie es schien das Problem zu sein:
Person.cpp: 17: 62: Anmerkung: nicht übereinstimmen Typen 'const std :: basic_string < _CharT, _Traits, _Alloc>' und 'void' std :: cout < < "Geburtsdatum:" < < BirthdateObj.showBirthDate(); ^ Prozess mit Status beendet 1 (0 Minute (n), 0 Sekunden (s)) 1 Fehler (s), 0 Warnung (s) (0 Minute (n), 0 Sekunden (s))
Hier ist mein einfaches Programm:
Person.h
#ifndef PERSON_H
#define PERSON_H
#include <Birthdate.h>
class Person
{
public:
Person(int age, Birthdate BirthdateObj);
virtual ~Person();
void showPersonInformation();
private:
int age;
Birthdate BirthdateObj;
};
#endif // PERSON_H
Person.cpp
#include "Person.h"
#include <iostream>
Person::Person(int age, Birthdate BirthdateObj) : age(age), BirthdateObj(BirthdateObj)
{
//ctor
}
Person::~Person()
{
//dtor
}
void Person::showPersonInformation()
{
std::cout << "Current age: " << age << std::endl;
std::cout << "Birthdate: " << BirthdateObj.showBirthDate();
}
B irthdate.h
#ifndef BIRTHDATE_H
#define BIRTHDATE_H
class Birthdate
{
public:
Birthdate(int day, int month, int year);
virtual ~Birthdate();
void showBirthDate();
private:
int day, month, year;
};
#endif // BIRTHDATE_H
Birthdate.cpp
#include "Birthdate.h"
#include <iostream>
Birthdate::Birthdate(int day, int month, int year) : day(day), month(month), year(year)
{
//ctor
}
Birthdate::~Birthdate()
{
//dtor
}
void Birthdate::showBirthDate()
{
std::cout << day << "/" << month << "/" << year;
}
main.cpp
#include <iostream>
#include "Birthdate.h"
#include "Person.h"
int main()
{
Birthdate BirthdateObj(7, 16, 1995);
//Birthdate *pBirthdateObj = &BirthdateObj;
Person PersonObj(20, BirthdateObj);
Person *pPersonObj = &PersonObj;
pPersonObj->showPersonInformation();
//pBirthdateObj->showBirthDate();
return 0;
}
Sie scheinen einige Missverständnisse darüber zu haben, wie Funktionen und ihre Rückgabewerte funktionieren. Erwägen Sie, ein [großes Buch über C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) zu nehmen, um sicherzustellen, dass Sie nicht aus fragwürdigem Material lernen. –
BirthdateObj.showBirthDate() gibt void zurück, das nicht an std :: cout übergeben werden kann. Übrigens, Sie können einfach PersonObj.showPersonInformation() aufrufen, oder? – stijn
@stijn Hallo, ja ich habe es jetzt. Jedenfalls für mich (nur für mich oder vielleicht andere Leute), Zeiger auf ein Objekt und Zugriff auf sein Mitglied über -> ist schön lol. Nun, du könntest mir sagen, ob es eine schlechte Übung ist oder nicht. – Fur