错误C2061:语法错误:标识符

Dun*_*gLe 16 c++ syntax-error

这是我的C++代码

// XuatChuoiBTHang.h
#pragma once
#include "BieuThuc.h"
#include "BieuThucHang.h"

class XuatChuoiBTHang
{
    public:
        virtual string xuatChuoi(BieuThucHang* btHang) = 0;     
};

// BieuThucHang.h
#pragma once
#include "bieuthuc.h"
#include "XuatChuoiBTHang.h"

class BieuThucHang : public BieuThuc
{
    private:
        XuatChuoiBTHang* xuatChuoiBTHang;
};
Run Code Online (Sandbox Code Playgroud)

输出是:

"错误C2061:语法错误:标识符'BieuThucHang'"

怎么解决?

Alo*_*ave 38

您有头文件的循环依赖.您需要通过在XuatChuoiBTHang.h以下位置使用前向声明来打破此循环包含依赖项:

class BieuThucHang;
Run Code Online (Sandbox Code Playgroud)

另外,#include "BieuThucHang.h"从中删除XuatChuoiBTHang.h.

  • 在其他人发布另一个答案之前告诉他有关循环依赖的信息. (3认同)
  • @DungLe:你不能在编程论坛上学习C++所以我的建议是拿一本[好书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list ).为了立即理解[this](http://en.wikipedia.org/wiki/Circular_dependency)可能有用. (3认同)