2017-10-06 112 views
0

我通過一些代碼去這是一個小聯合國舉辦的參數類型的類。 我想使用一個cpp文件中創建的類作爲頭文件中的參數類型。我知道這個類需要在標題中定義,但我現在正在尋找一個簡短的方法。這是我使用在CPP文件創建爲一個頭文件

filename: foo.cpp 

class bar { 
} 

現在頭

filename: foo.h 

class teacher { 
public: 
    void dosomething(bar b) { ///<-----Incomplete type. 
    b.work(); /// 
    } 
} 

我想聲明的標題裏面的原型這種方式

class foo; 
class teacher { 
    public: 
     void dosomething(bar b) { 
     b.work(); ///Error no method work for incomplete type. 
     } 
    } 

什麼將是除了解決這個問題的最簡單方法從bar類移到頭文件

+0

「什麼是解決這個問題的最簡單的方法」 - 添加包括在「酒吧」的定義帶來。 –

+0

我不確定這是什麼意思?我怎麼做 ? – Rajeshwar

回答

0

我認爲它願買電子健康l條這樣的好:

文件:bar.hh

class bar 
{ 
... 
} 

文件:foo.hh

#include "bar.hh" 
class teacher 
{ 
public: 
    void dosomething(bar b) 
{ 
    b.work(); 
    } 
} 
1

您可以前瞻性聲明在頭類型bar假設你做什麼,依靠它是一個完整的類型。例如,這是不行的:

// foo.hpp 
class bar; 
class teacher { 
public: 
    void dosomething(bar b) { 
    // Will fail, bar is not complete: 
    b.work(); 
    } 
}; 

但這會:

// foo.hpp 
class bar; 
class teacher { 
public: 
    void dosomething(bar b); 
}; 

// foo.cpp 
class bar { 
public: 
    void work() {} 
}; 

void teacher::dosomething(bar b) { 
    b.work(); 
} 

不過,我會建議,而不是創建一個bar.hpp文件與bar類型的定義和#includefoo.hpp

考慮,例如,使得包括foo.hpp任何代碼(除其他foo.cpp)將無法調用teacher::dosomething(bar),因爲它不會有任何定義bar

+0

是的,我把implimentation轉移到一個cpp文件,只是向前宣佈的類型 – Rajeshwar