我正在学习 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 文件中的有效类型。
#include <string>
.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] 删除。
我来说两句