我真的很難將.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