我真的很擅长将.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 fileTicketOrder::getQuantity() const /var/tmp//ccaSflFG.oTicketOrder::setType(char) /var/tmp//ccaSflFG.oTicketOrder::setQuantity(int) /var/tmp//ccaSflFG.old: fatal: Symbol referencing errors. No output written to a.outcollect2: ld returned 1 exit status
任何人都可以帮我拆分.h和.cpp吗?或者给我一些建议?我做了很多研究,无法弄清楚出了什么问题.
谢谢.
解决方法:
您的.cpp文件错误,因为重新声明了类,所以这是错误的.它应该是这样的:
#include <iostream>#include "TicketOrder.h"using namespace std;//Gettersint TicketOrder::getQuantity() const{ return quantity;}char TicketOrder::getType() const{ return type;}//and so on
另外,请注意,在头文件中添加using命名空间,正如您所做的那样,被视为非常糟糕的样式.
来源:https://www.icode9.com/content-4-367751.html联系客服