一个头文件中的类继承另一个头文件中的类,应该怎么写

如题,查了c++primer,也没有详细解释。提示如下错误
g++ -O2 main.cpp -lm -o main
C:\Users\Traeyee\AppData\Local\Temp\ccgVqs5n.o:main.cpp:(.text.startup+0x13): undefined reference to `test2::show2()'
collect2.exe: error: ld returned 1 exit status

 //A.h
 #ifndef A_H
#define A_H
class test1
{
  public:
    void show();
};
#endif

//A.cpp
void test1::show()
{
    cout << "TTT" << endl;
}

//B.h
#ifndef B_H
#define B_H
#include "A.h"
class test2 : public test1
{
  public:
    void show2();
};
#endif

//B.cpp
void test2::show2()
{
    cout << "2222\n";
}

//main.cpp
#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;

int main()
{
    test2 TP;
    TP.show2();

    return 0;
}

B.cpp中没有include B.h么?

#include "A.h"
#include
using namespace std;
void test1::show()
{
cout << "TTT" << endl;
}
#include "B.h"
#include
using namespace std;
void test2::show2()
{
cout << "2222\n";
}

你需要改两个文件:
A.cpp

 #include "A.h"
#include <iostream>
using namespace std;
void test1::show()
{
    cout << "TTT" << endl;
}

B.cpp

 #include "B.h"
#include <iostream>
using namespace std;
void test2::show2()
{
    cout << "2222\n";
}

一定要注意,一定要加对应的类的头文件,不然的话是类和方法是对应不起来的

一种方法,以顺序依赖替换编译依赖
//A.h
class A{......
void fun();
};
//A.cpp
void A::fun(){....};

//B.h

class B{
void fun_test();
};

//B.cpp
#include "A.h" // 这两行永远按照这个顺序包含
#include "B.h" //
void B::fun_test(){
............
}

//main.cpp
#include
#include "A.h"
#include "B.h"
int main(){
B b;
b.fun_test();
return 0;
}

一种方法,一劳永逸,但是有编译依赖
//A.h
class A{......
void fun();
};
//A.cpp
void A::fun(){....};

//B.h
#include "A.h"
class B{
void fun_test();
};

//B.cpp
//#include "B.h"
void B::fun_test(){
............
}

//main.cpp
#include
#include "B.h"
int main(){
B b;
b.fun_test();
return 0;
}

大约也就是这样吧

一种方法,以顺序依赖替换编译依赖
//A.h
class A{......
void fun();
};
//A.cpp
void A::fun(){....};

//B.h

class B{
void fun_test();
};

//B.cpp
#include "A.h" // 这两行永远按照这个顺序包含
#include "B.h" //
void B::fun_test(){
............
}

//main.cpp
#include
#include "A.h"
#include "B.h"
int main(){
B b;
b.fun_test();
return 0;
}

一种方法,一劳永逸,但是有编译依赖
//A.h
class A{......
void fun();
};
//A.cpp
void A::fun(){....};

//B.h
#include "A.h"
class B{
void fun_test();
};

//B.cpp
//#include "B.h"
void B::fun_test(){
............
}

//main.cpp
#include
#include "B.h"
int main(){
B b;
b.fun_test();
return 0;
}

大约也就是这样吧