There is a problem of circular includes: XuatChuoiBTHang.h includes BieuThucHang.h and BieuThucHang.h includes XuatChuoiBTHang.h
Avoid it by just declaring the class in the header file.
In addition, you would also need to #include <string> and use the qualified name std::string
Note that the headers may be included (without problems) in the implementation (.cpp) files.
1 2 3 4 5 6 7 8 9 10 11 12 13
// XuatChuoiBTHang.h
#pragma once
// #include "BieuThucHang.h" // *** do not include the header
class BieuThucHang ; // declare the class
#include <string> // *** required
class XuatChuoiBTHang
{
public:
// use BieuThucHang 'in name'
virtual std::string xuatChuoi( BieuThucHang* btHang ) = 0;
};