I get a weird response from my c++ compiler. I searched the internet but came up with nothing usefull or helpfull...
Compiler Response:
floating.hpp|line 29|warning: `class HexFloatingPoint' has virtual functions but non-virtual destructor
In constructor `HexFloatingPoint::HexFloatingPoint(int, int)':
floating.cpp|line 5|error: no matching function for call to `FloatingPoint::FloatingPoint()'
floating.hpp|line 16|note: candidates are: FloatingPoint::FloatingPoint(const FloatingPoint&)
floating.cpp|line 3|note: FloatingPoint::FloatingPoint(int, int)
These are the code files:
main.cpp
#include <iostream>
#include "floating.hpp"
using namespace std;
int main(int argc, char* argv[])
{
    return 0;
}
floating.hpp
#ifndef FLOATING
#define FLOATING
#include <string>
#include <vector>
using namespace std;
class FloatingPoint;
class HexFloatingPoint;
class HexDigit;
class HexDigitBool;
class HexDigitChar;
class FloatingPoint
{
private:
    int significant_length;
    int exponent_length;
public:
    FloatingPoint(int sign_length,int exp_length);
    virtual void set_significant(string number) = 0;
    virtual void set_exponent(string number);
    virtual void print();
};
class HexFloatingPoint : public FloatingPoint
{
private:
    vector<HexDigit*> significant_length;
    vector<HexDigit*> exponent_length;
public:
    HexFloatingPoint(int sign_length,int exp_length);
    void set_significant(string number);
    void set_exponent(string number);
    void print();
    ~HexFloatingPoint();
};
class HexDigit
{
public:
    virtual void print()=0;
    virtual void set_value(char c);
    virtual int get_value();
};
class HexDigitBool : public HexDigit
{
private:
    bool b[4];
public:
    void print();
    virtual void set_value(char c);
    virtual int get_value();
};
class HexDigitChar : public HexDigit
{
private:
    char c;
public:
    void print();
    virtual void set_value(char c);
    virtual int get_value();
};
#endif
floating.cpp
#include "floating.hpp"
FloatingPoint::FloatingPoint(int sign_length,int exp_length) : significant_length(sign_length),exponent_length(exp_length){}
HexFloatingPoint::HexFloatingPoint(int sign_length,int exp_length) : significant_length(sign_length),exponent_length(exp_length){}
void HexFloatingPoint::set_significant(string number){}
void HexFloatingPoint::set_exponent(string number){}
void HexFloatingPoint::print(){}
HexFloatingPoint::~HexFloatingPoint(){}
I hope that you can help me. I already tried to add FloatingPoint(); in floating.hpp and floating.cpp but it didn't help.
UPDATE 1
Changed Constructor to
HexFloatingPoint::HexFloatingPoint(int sign_length,int exp_length) : FloatingPoint(sign_length,exp_length){}
Compiler said no ...
floating.o||In function `_ZNSt12_Vector_baseIP8HexDigitSaIS1_EED2Ev':|
stl_vector.h:(.text+0x8)||undefined reference to `vtable for FloatingPoint'|
floating.o||In function `_ZN13FloatingPointC1Eii':|
floating.cpp|3|undefined reference to `vtable for FloatingPoint'|'
UPDATE 2
Changing
class FloatingPoint
{
private:
    int significant_length;
    int exponent_length;
public:
    FloatingPoint(int sign_length,int exp_length);
    virtual void set_significant(string number) = 0;
    virtual void set_exponent(string number);
    virtual void print();
};
to
class FloatingPoint
{
private:
    int significant_length;
    int exponent_length;
public:
    FloatingPoint(int sign_length,int exp_length);
    virtual void set_significant(string number) = 0;
    virtual void set_exponent(string number) = 0;
    virtual void print() = 0;
};
resolved the errors occured in update 1
changing
class HexFloatingPoint : public FloatingPoint
{
private:
    vector<HexDigit*> significant_length;
    vector<HexDigit*> exponent_length;
public:
    HexFloatingPoint(int sign_length,int exp_length);
    void set_significant(string number);
    void set_exponent(string number);
    void print();
    ~HexFloatingPoint();
};
to
class HexFloatingPoint : public FloatingPoint
{
private:
    vector<HexDigit*> significant_length;
    vector<HexDigit*> exponent_length;
public:
    HexFloatingPoint(int sign_length,int exp_length);
    void set_significant(string number);
    void set_exponent(string number);
    void print();
    virtual ~HexFloatingPoint();
};
resolved warning
changing
HexFloatingPoint::HexFloatingPoint(int sign_length,int exp_length) : significant_length(sign_length),exponent_length(exp_length){}
to
HexFloatingPoint::HexFloatingPoint(int sign_length,int exp_length) : FloatingPoint(sign_length,exp_length),significant_length(sign_length),exponent_length(exp_length){}
fixed first problem
Thanks a lot guys!!
 
     
     
     
     
    