类中未声明的字符串标识符

迈萨米马尼

我正在学习 C++ 继承,在这里我遇到了一个问题。如果我在 main.cpp 文件中制作这个简单的代码,它将毫无问题地工作。

但是当我将头文件中的文件分开时,它将无法工作,并且会出现一些错误。

这是名为 book.h 的头文件的代码

 #ifndef BOOK_H
 #define BOOK_H

 class book
{
 private:
 string name;

 public:
 book(string n = "default") : name(n) {};
 ~book() {};
 void printname();
};

#endif

这里是 book.cpp 的代码,我在这个文件中定义了这个类的函数。

#include <iostream>
#include <Windows.h>
#include <string>
#include "book.h"

using namespace std;

void book::printname()
{
 cout << name << endl;
 return;
}

最后是 main.cpp 文件:

#include <iostream>
#include <Windows.h> 
#include <string>
#include "book.h"

using namespace std;

 int main()
{
 system("color 0A");
 book programing("c++");
 cout << "the name of the book is ";
 programing.printname();

 system("pause");
 return;
}

以及我得到的错误:

严重性代码描述项目文件行抑制状态

错误 C2065“名称”:未声明的标识符 book d:\vs program\book\book\book.cpp 10

错误 C3646“名称”:未知覆盖说明符 book d:\vs program\book\book\book.h 7

错误 C4430 缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int book d:\vs program\book\book\book.h 7

错误 C2061 语法错误:标识符 'string' book d:\vs program\book\book\book.h 10

错误 C2065“n”:未声明的标识符 book d:\vs program\book\book\book.h 10

错误 C2614 'book':非法成员初始化:'name' 不是基础或成员书籍 d:\vs program\book\book\book.h 10

错误 C3646“名称”:未知覆盖说明符 book d:\vs program\book\book\book.h 7

错误 C4430 缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int book d:\vs program\book\book\book.h 7
Error C2061 语法错误: identifier 'string' book d:\vs program\book\book\book.h 10

错误 C2065“n”:未声明的标识符 book d:\vs program\book\book\book.h 10

错误 C2614 'book':非法成员初始化:'name' 不是基础或成员书籍 d:\vs program\book\book\book.h 10

和其他错误...

萨胡

您需要确保这string是 .h 文件中的有效类型。

  1. 添加#include <string>.
  2. 使用std::string而不仅仅是string.

#ifndef BOOK_H
#define BOOK_H

#include <string>

class book
{
   private:
      std::string name;

   public:
      book(std::string n = "default") : name(n) {};
      ~book() {};
      void printname();
};

#endif

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章