2014-07-18 52 views
-1

問題:我已經挖掘了一個類,然後在我的主函數中使用,它會拋出未定義的錯誤。然後我添加了.h文件,並引發了另一個錯誤。我的問題是要根據.cpp類文件編寫.h。下面是詳細介紹:C++頭文件和類定義問題

我有這個類ElevatorButton.cpp declated:

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 

class ElevatorButton 
{ 
    public: 
     int pressed = 0; // boolean 

     void myFunc(int param1) 
     { 
      cout << param1 << endl; 
     } 
}; 

然後我在ElevatorSimulation.cpp本文件:

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include "Header.h" 

using namespace std; 



int main() 
{ 
    ElevatorButton ElvBtn; 

    cout << ElvBtn.myFunc(1) << endl; 
} 

編譯代碼經常會拋出錯誤。我應該像看起來一樣聲明頭文件。但在我的頭文件中,我應該如何管理定義?我已閱讀有關.h文件,但仍困惑。這裏是我的header.cpp:

#ifndef ElevatorButton_H 
#define ElevatorButton_H 

class ElevatorButton 
{ 
public: 
    int pressed = 0; // boolean 
public: 
    void myFunc(int param1){}; 
}; 

#endif 

但將與Header.h以下錯誤:

1>ElevatorSimulation.cpp(14): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion) 
+1

有時只需閱讀錯誤消息(包括它的榮譽)就足夠了。 ...不太正確,往往不是。 – Deduplicator

+1

'header.cpp'聽起來很不對勁:P ... –

回答

3

你得到錯誤,因爲myFunc返回void,所以

cout << ElvBtn.myFunc(1) 

沒有右側評估爲無效的定義。如果要打印cout的值,則myFunc必須返回可傳入流中的類型。

這個問題與您的類定義完全不同,它在您的主要功能中。

0

它是header.cpp嗎?因爲它應該是header.h