2015-11-08 39 views
-1

如何在項目中使用兩個.cpp文件?如何在項目(類)中使用兩個.cpp文件?

main.cpp

#include "second.h" 
int main() { 
    secondFunction(); 
} 

second.h

void secondFunction(); 

second.cpp

#include "second.h" 
void secondFunction() { 
    // do stuff 
} 

它的工作原理,但是當我使用類這是行不通的。

empoyee.h

class employee { 
public: 
void paymentmethod(); 
}; 

employee.cpp

#include "employee.h" 
void employee::paymentmethod() { 
//code 
    } 

main.cpp

#include "employee.h" 
main() 
{ employee em; 
em.paymentmethod() 

} 

我的.cpp聲明已經想通了錯誤。

+2

很難告訴什麼可能是錯誤的,而不看Makefile的內容。請發佈Makefile的內容。 –

+2

您是否忽略了main.cpp中的employee.h文件?也請發佈錯誤信息 – user4578093

+1

歡迎來到SO!首先,「幫我解決這個問題」不是一個問題,而是一個不適當的要求。其次,您的帖子看起來並不包含完整的錯誤信息,這使得很難說出錯的原因。 –

回答

0

我不知道它是什麼,你正在嘗試做的,但這裏有一些提示:

  • 每頭文件應包含您要使用該文件或類中的所有頭。
  • 每個與特定頭文件對應的cpp文件都應該只包含該頭文件。
  • 您的main.cpp應該包含您正在用於您的程序的所有標題。

你的代碼應該是這個樣子:

// main.cpp 
#include "second.h" 
#include "employee.h" 

int main(){ 
//code 
} 

在你的其他文件:

//second.h 

//includes here 
void function(); 
//--------------------------------------------- 

//second.cpp 
#include "second.h" 

void function(){ //code } 

//--------------------------------------------- 

//employee.h 

//includes here 

class employee{ 
public: 
    void payment(); 
//ctor, dtor, and other declarations 
} 

//--------------------------------------------- 

//employee.cpp 

#include "employee.h" 

void employee::payment(){ //code } 

//rest of methods 

不幸的是,會有,如果你有相同的頭不止一次建設問題同一個程序。所以對於所有頭文件,你應該實現這個守衛:

#ifndef __MYCLASS_H__ 
#define __MYCLASS_H__ 

//includes 

class MyClass{ 
//declarations 
} 

#endif 
+1

我不同意第2和第3點:** 2 ** .cpp文件可能非常需要來自其相應標題中不需要的其他標題的內容。 ** 3 **主文件應像所有其他文件一樣,只包含它*所需的內容*。 – Biffen

+0

我看到你關於需要標題不在其相應標題中的cpp文件的觀點,但我個人將我需要的所有內容都放在相應的標題中。 cpp應該沒有聲明,包含和其他預處理指令。 cpp應該只包含代碼。這就是我學會的方式。而Google C++風格指南似乎並不在乎這是如何做得特別的。它只是說,「任何包含在相關頭文件中的東西都不需要再次被包含在相關的cc中(即foo.cc可以依賴於foo.h的include)。」 – SlenderPsycho

相關問題