Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας

 

Εχω υλοποιήσει μια abstract κλάση , ορίζοντας μέσα σε αυτήν μια pure virtual function ώς εξής:

 

HEADER FILE:

 

>#pragma once

class FI
{
public:
FΙ(void);
virtual ~FΙ(void)=0; //pure virtual destructor

//pure virtual method
virtual double Price(FΙ* ptr_FI)=0;

virtual void Print()=0;
};

 

και στο .cpp αρχείο της abstract class έχω τα εξής:

 

>#include "FI.h"

FI::FI(void)
{
}


FI::~FI(void)
{
}

 

Πέρα απο αυτήν την abstract class, έχω ορίσει μια επιπλέον κλάση που κληρονομεί από αυτήν την abstract class και στην οποία υλοποιώ την pure virtual function Price ως εξής:

 

 

>#pragma once
#include "FI.h"
using namespace std;




class EQ :
public FI
{
double ltPrice;
string name;
double stPrice;

public:

string GetName();
double GetLastPrice();

void SetSpotPrice();
double GetSpotPrice();

EQ(double ltPrice, string name);
EQ(void);
virtual ~EQ(void);

virtual void Print();
double Price(FI* ptr_FI);

};

 

και το .cpp file την υλοποιηση της pure virtual την έχω κάνει ως εξης:

 

>double Price(FinancialInstrument * ptr_Instrument) 
{
double spotPrice;
Equity* ptr_e = dynamic_cast<Equity *>(ptr_Instrument);

if(ptr_e!=0)
{
   spotPrice=ptr_e->GetSpotPrice();
}
return spotPrice;
}

 

Στην main για να τεσταρω το πρόγραμμα μου κάνω τα εξής:

 

>EQ eq(price, name);

FI *fpt= & eq;
double eqPrice;

eqPrice=fpt->Price(fpt);
cout<<"PRICE: "<<eqPrice<<endl;

 

Δημιουργώ ένα αντικείμενο της EQ και έναν δείκτη στην abstract FI, και περνάω τον δείκτη σαν όρισμα στην συναρτηση που είναι pure virtual και την έχω ορίσει στην EQ κλάση.

 

όμως αυτό έχει σαν αποτέλεσμα στο Visual studio να βγαίνουν λάθη από τον Linker..όπως LINK1120 και τα λοιπά..Καμια ιδέα για ποίο λόγο συμβαινει αυτό?

Δημοσ.

Αντί για FinancialInstruments είναι FI στον κώδικα. Δικό μου λάθος..FI είναι η abstract class. Τα λάθη που βγάζει είναι

 

error LINK1120 unresolved externals

error LINK2001 unresolved external symbols....

 

είναι σωστός ο τρόπος που ορίζω την εικονική συνάρτηση ? Δηλαδή με dynamic_cast.. όταν έχω σαν όρισμα έναν δείκτη σε μια abstract class?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...