c如何正确地将.cpp拆分为.cpp和.h
发布时间:2020-12-16 09:40:23 所属栏目:百科 来源:网络整理
导读:我真的很擅长将.cpp分成.cpp和.h. 我之前使用过.h文件,但从未真正将.cpp分成.cpp和.h. 我知道.h文件仅用于声明而.cpp用于定义,我试图将.cpp拆分为.cpp和.h但我收到很多错误,所以我想知道是否有人可以帮助我我的代码. 以下类是尚未拆分为.cpp和.h的类,只是为
我真的很擅长将.cpp分成.cpp和.h.
我之前使用过.h文件,但从未真正将.cpp分成.cpp和.h. 我知道.h文件仅用于声明而.cpp用于定义,我试图将.cpp拆分为.cpp和.h但我收到很多错误,所以我想知道是否有人可以帮助我我的代码. 以下类是尚未拆分为.cpp和.h的类,只是为了向您展示“之前的版本”. TicketOrder.cpp #include <iostream> using namespace std; class TicketOrder { private : char type; int quantity; public : friend std::ostream& operator<<(std::ostream& os,TicketOrder const& order) { os << " Type: " << order.type << ",Quantity: " << order.quantity; return os; } //Getters int getQuantity() const; { return quantity; } char getType() const; { return type; } //Setters void setQuantity (int x) { quantity =x; } void setType(char y) { type =y; } }; 现在,我将上面的类拆分为.cpp和.h TicketOrder.cpp #include <iostream> #include "TicketOrder.h" using namespace std; class TicketOrder { //Getters int getQuantity() const { return quantity; } char getType() const { return type; } //Setters void setQuantity (int x) { quantity =x; } void setType(char y) { type =y; } }; TicketOrder.h #include <iostream> using namespace std; class TicketOrder { private : char type; int quantity; public : friend std::ostream& operator<<(std::ostream& os,TicketOrder const& order) { os << " Type: " << order.type << ",Quantity: " << order.quantity; return os; } //Getters int getQuantity() const; char getType() const; //Setters void setQuantity (int x); void setType(char y); }; 我还有一个用于包含我不会在这里包含的主类的类,因为它很长并且我认为它不重要因为我知道我正在做.h和.cpp错误. 当我尝试编译main时,它给了我这个错误: Undefined first referenced symbol in file TicketOrder::getQuantity() const /var/tmp//ccaSflFG.o TicketOrder::setType(char) /var/tmp//ccaSflFG.o TicketOrder::setQuantity(int) /var/tmp//ccaSflFG.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status 任何人都可以帮我拆分.h和.cpp吗?或者给我一些建议?我做了很多研究,无法弄清楚出了什么问题. 谢谢. 解决方法
您的.cpp文件错误,因为重新声明了类,所以这是错误的.它应该是这样的:
#include <iostream> #include "TicketOrder.h" using namespace std; //Getters int TicketOrder::getQuantity() const { return quantity; } char TicketOrder::getType() const { return type; } //and so on 另外,请注意,在头文件中添加using命名空间,正如您所做的那样,被视为非常糟糕的样式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |