Hi, I'm having trouble with the destructors of a derived class from a base class, here are the codes
Base Class of Asteroid.h
Code:
#ifndef ASTEROID_H
#define ASTEROID_H
#include <QPainter>
using std::string;
class Asteroid
{
public:
Asteroid *aNext;
virtual float x_data(void) const = 0;
virtual float y_data(void) const = 0;
virtual string strType_data(void) const = 0;
virtual int radius_data(void) const = 0;
virtual int vertice_A(void) const = 0;
virtual int vertice_B(void) const = 0;
virtual ~Asteroid() = 0;
};
#endif
Derived Class AsteroidNode.h
Code:
#ifndef ASTEROIDTYPE1_H
#define ASTEROIDTYPE1_H
#include <iostream>
#include <QPainter>
#include <cstdlib>
#include "Asteroid.h"
using std::string;
class AsteroidType1 : public Asteroid
{
public:
AsteroidType1(string);
AsteroidType1(string,float,float);
~AsteroidType1();
float x_data(void) const;
float y_data(void) const;
string strType_data(void) const;
int vertice_A(void) const;
int vertice_B(void) const;
int radius_data(void) const;
private:
float x;
float y;
string aType;
};
#endif
AsteroidNode.cpp
Code:
#include "AsteroidType1.h"
// Default Constructor
AsteroidType1::AsteroidType1(string strType)
{
aType = strType;
x = 9;
aNext = NULL;
}
// Alternative constructor
AsteroidType1::AsteroidType1(string strType, float x_data, float y_data)
{
aType = strType;
x = x_data;
y = y_data;
aNext = NULL;
}
AsteroidType1::~AsteroidType1()
{
}
// Get X value
float AsteroidType1::x_data(void) const
{
return x;
}
// Get Y value
float AsteroidType1::y_data(void) const
{
return y;
}
string AsteroidType1::strType_data(void) const
{
return aType;
}
int AsteroidType1::radius_data(void) const
{
return 1;
}
int AsteroidType1::vertice_A(void) const
{
return 1;
}
int AsteroidType1::vertice_B(void) const
{
return 1;
}
Error I had :
Code:
AsteroidNode.o: In function `AsteroidNode::AsteroidNode(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, float, float, int, int, int)':
AsteroidNode.cpp:(.text+0x167): undefined reference to `Asteroid::~Asteroid()'
AsteroidNode.o: In function `AsteroidNode::AsteroidNode()':
AsteroidNode.cpp:(.text+0x211): undefined reference to `Asteroid::~Asteroid()'
AsteroidNode.o: In function `AsteroidNode::AsteroidNode(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, float, float, int, int, int)':
AsteroidNode.cpp:(.text+0x2c7): undefined reference to `Asteroid::~Asteroid()'
AsteroidNode.o: In function `AsteroidNode::AsteroidNode()':
AsteroidNode.cpp:(.text+0x371): undefined reference to `Asteroid::~Asteroid()'
AsteroidNode.o: In function `AsteroidNode::~AsteroidNode()':
AsteroidNode.cpp:(.text+0x3d7): undefined reference to `Asteroid::~Asteroid()'
AsteroidNode.o:AsteroidNode.cpp:(.text+0x41b): more undefined references to `Asteroid::~Asteroid()' follow
collect2: ld returned 1 exit status
make: *** [game] Error 1
Any ideas? I've yet to add anything inside the destructor function because I haven't finish my work yet.