我真的很难将.cpp分割成.cpp和.h。C++如何正确地将.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另一个用于包含主类的另一个类,我不会在这里包含它,因为它很长,我不认为这很重要,因为我知道我在做.h和.cpp错误。
当我尝试编译为主,它给了我这个错误:
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?或者给我一些建议?我做了大量的研究,无法弄清楚什么是错的。
谢谢。
1)使用一个简单的例子,2)使用空格变得容易,3)不重复'TicketOrder'的声明。 – Beta 2012-02-09 00:03:49
该类的重复声明会很好(那些看起来像'类TicketOrder;',但这里我们有一个重复的*定义*。 – 2012-02-09 00:14:51
@BenVoigt,你是对的,我站在纠正。 – Beta 2012-02-09 00:31:48