我对将.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);
};
我还有一个类用来包含主类,因为它很长并且我认为它不重要,所以我不会在这里包含它。当我尝试编译主类时,会出现以下错误:
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文件吗?或者给我建议?我做了很多研究,但是不知道哪里出了问题。
谢谢。
class TicketOrder;
,但这里有一个重复的定义)。 - Ben Voigt