2015-11-17 5 views
0

Я новичок в C++, и я создаю небольшую программу, чтобы больше узнать о наследовании на языках программирования.Как передать объект «& player» в другой унаследованный класс-конструктор («оценка»)?

Из того, что я собираю, наследование - это когда у вас есть полномочия и разрешение на получение всех функций-членов и значений родительского/базового класса. Аналогия в реальной жизни наследует некоторые из моих физических свойств моего отца, такие как цвет глаз и т. Д. (Хотя я бы хотел наследовать его бизнес-ум ...)

В любом случае, я пытаюсь попытаться пройти уже инициализированный объект в унаследованный конструктор классов.

Это мой код до сих пор:

#include <string> 
#include <iostream> 
using namespace std; 

class player{ 
private: 
    string name; 
    int level; 

public: 
    player(const string &n, const int &l) : name(n), level(l){}; 

    string getName() const {return name;} 
    int getLevel() const {return level;} 
}; 

class score: public player{ 
private: 
    int scores; 

public: 
    score(const int &s, const string &n, const int &l) : player(n, l), scores(s){}; 
    void setScore(int newScores){scores = newScores;} 
    int getScore() const {return scores;} 
}; 

int main(){ 
    player steve("steve", 69); 
    cout << steve.getName() << endl; 
    cout << steve.getLevel() << endl; 
} 

В принципе, я хочу передать объект, который я intialised в моей main() функции программы steve по ссылке в конструктор в score классе. Однако я не знаю, как это сделать? Было бы что-то вроде score(const player &p, const int &s) : player(&p), scores(s) ?? Я получаю, как передавать значения членов, но мне интересно проходить в самих объектах?

Это будет означать много, если кто-то может помочь мне здесь, как мне очень нравится программирование особенно C++

ответ

0

Вы не можете расширить объект базового класса (player) на объект класса ребенка (score) потому что это потребует выделения большего объема памяти непосредственно после исходного объекта для хранения дополнительных элементов дочернего класса.

В вашем примере, вы можете определить этот конструктор, чтобы скопировать значения из player объекта для нового score объекта:

score(const player &p, const int &s) : player(p.n, p.l), scores(s){}; 

Если вы просто хотите, чтобы связать объект игрока, то score класс должен включать в себя указатель на этот объект.

Смежные вопросы