C++ C++;不编译,因为它说文件没有';不存在,但它在同一目录中

C++ C++;不编译,因为它说文件没有';不存在,但它在同一目录中,c++,compiler-errors,g++,header-files,C++,Compiler Errors,G++,Header Files,在一个文件夹中,我得到了以下文件: book.h,book.cpp,card.h,card.cpp 这是这本书的内容 class book { public: string title; string author; string get_title(); string get_author(); } book::book(string title, string author){ title = title; a

在一个文件夹中,我得到了以下文件:

book.h,book.cpp,card.h,card.cpp

这是这本书的内容

class book {

public:
        string title;
        string author;
        string get_title();
        string get_author();

}

book::book(string title, string author){
   title = title;
   author = author;
}
这是我的书。cpp:

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

using namespace std;

string book::get_title(){

  return title;
}

string book::get_author(){
 return author;
}

int main(){

cout << ¨it works! \n¨ 
}
#包括
#包括
#包括
使用名称空间std;
字符串书::获取标题(){
返回标题;
}
字符串书::get_author(){
返回作者;
}
int main(){
CUT< P> <代码>包含“<代码>语句”,当包含的文件是“包含”路径的一部分时,使用“代码> <代码>括号,通常(虽然不是唯一)当文件来自库或C++标准库时。

当文件是项目的本地文件和源代码的本地文件时,将使用“

如果你把它们混在一起,你会过得很不愉快。

两者的区别

#include <book.h>
第一个只在INCLUDE path中查找文件
book.h
。后者首先在源文件所在的目录中查找该文件,如果未找到该文件,则在INCLUDE path中查找该文件。 因此,您可以通过用引号替换尖括号,或者通过添加目录以包含来解决问题

g++ -I . -c book.cpp

用户包含应在
不是
。不是答案,而是…你的书。h看起来无论如何都是错误的。你需要使用std::string并在标题中包含。此代码还有一些其他问题。
book.h
应该
\include
,并具有
std::string
。不要使用命名空间而使用
string
这是个坏主意。<代码>标题=标题;< /C> >不做你认为的。有公共数据成员会破坏访问者的目的。为什么你为一个明显的C++问题而浪费了C标签?我不知道,好吗?我对这个混乱感到抱歉。
g++ -I . -c book.cpp