错误:"任何类"未在此范围内声明

error: ‘whatever class' was not declared in this scope

本文关键字:范围内 声明 任何类 错误      更新时间:2023-10-16

main 包含:

#include "num.h"
num * intObj = new num;

数字H包含:

#ifndef __EXPR_H__
#define __EXPR_H__
#include <string>
class num : public Expr {
//
};
#endif

Expr.H包含:

#ifndef __EXPR_H__
#define __EXPR_H__
#include <string>
class Expr {
 public:
  virtual int eval() const = 0;
  virtual std::string prettyPrint() const = 0;
  virtual ~Expr();
};
#endif

然后我得到:

error: ‘num’ was not declared in this scope
       num * intObj = new num;
         ^ 

这是什么原因呢?我还在不同的 .h 文件中声明了类 Expr,该文件也包含在 main 中。

我声明和正在使用的所有新类都遇到相同的错误。

> 您对两个标头使用相同的标头保护__EXPR_H__。将仅定义一个。

num.h中的__EXPR_H__更改为__NUM_H__,就会没事的。

尝试以下操作之一:

#include "expr.h"  /* before num.h */
#include "num.h"
num * intObj = new num;

#ifndef __NUM_H__  /* Header file guard for num.h not expr.h here */
#define __NUM_H__
#include <string>
include "expr.h"  /* #ifndef __EXPR_H and #define __EXPR_H__ in this .h file */
class num : public Expr {
//
};
#endif