I'm a newbie at C++ and I was programming this code below.
This is DOCUMENT.h: It works well and therefore I didn't post its implementation (document.cpp):
#pragma once
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
class Document {
private:
int id;
char *titre;
public:
Document();
Document(int id, char *titre);
~Document();
Document(const Document &doc);
Document operator+( Document doc);
Document operator=(const Document &doc);
void setId(int id);
int getId();
void setTitre(char *titre);
char *getTitre();
};
class Livre :public Document {
private:
float price;
public:
Livre();
Livre(int id , char *titre,float price);
~Livre();
Livre( Livre &doc);
Livre operator+(Livre doc);
Livre operator=( Livre &doc);
void setPrice(float price);
virtual float getPrice();
};
class Article :public Document {
private:
char *date;
public:
Article();
Article(int id, char *titre , char *date);
~Article();
Article(Article &doc);
Article operator+( Article &doc);
Article operator=( Article &doc);
void setDate(char* date);
char *getDate();
};
MANAGER.H:
#include "Document.h"
class Manager {
private:
Document **doc ;
public:
int count = 0;
Manager();
~Manager();
int ajouter(Document *d);
void afficher();
};
MANAGER.CPP:
#include "stdafx.h"
#include "Manager.h"
Manager::Manager() {}
Manager::~Manager() {}
int Manager::ajouter(Document *d) {
if (count == 0) {
doc = (Document**)malloc( sizeof(Document));
doc[count] = new Document();
doc[0] = d;
}
else {
doc = (Document**)realloc(doc, count * sizeof(Document));
doc[count] = new Document();
doc[count] = d;
}
count++;
return 0;
}
void Manager::afficher() {
for (int i = 0; i < count; i++) {
printf("\nid : %d \n", doc[i]->getId());
printf("titre : %s \n", doc[i]->getTitre());
printf("Price : %f \n", doc[i]->getPrice());
}
}
My problem is in afficher()
function. I want to call getprice()
from there but, getprice()
is not a member of class Document
: it's member of Livre
class (which is a child of Document
). Is there any way to call getprice()
?