2012-06-27 164 views
1

我在C++中爲一個類(學校,而不是代碼)編寫了一個簡單的類。我有一點C++的經驗,但它已經有一段時間了,所以我重新學習了我忘了的一切,並學習了很多新的語法(我在Java中有更多的經驗)。下面是代碼:「未在範圍內聲明」C++問題

#include <iostream> 
#include <string> 

using namespace std; 
class Project112 
{ 
private: 
    string romanNumeral; 
    int decimalForm; 
public: 
    Project112() 
    { 
     romanNumeral = "";  
     decimalForm = 0; 
    } 
    int getDecimal() 
    { 
     return decimalForm; 
    } 
}; 

,這裏是司機:

include cstdlib 
include <iostream> 

using namespace std; 
int main() 
{ 
    Project112 x; 
    int value2 = x.getDecimal(); 
    return 0; 
} 

這是一個更大的計劃的一部分,但我已經簡化下來到這一點,因爲這是問題出在那裏。每次我嘗試運行該程序時,出現以下錯誤:

main.cpp:10: error: 'Project112' was not declared in this scope 
main.cpp:10: error: expected `;' before 'x' 
main.cpp:14: error: 'x' was not declared in this scope 

有人能解釋一下這個問題嗎?提前致謝。

+2

你似乎沒有包括你的班級標題。儘管如此,減少代碼對你有好處。你應該做的一件事(誰知道,老師也許會更喜歡它!)就是失去了使用名稱空間標準語句來污染全局名稱空間。 – chris

回答

5
#include "Project112.h" 

加上上面的主要內容。你忘了包含頭文件。並且:

using namespace std; 

不要在頭文件中這樣做。這將從std名稱空間導入任何文件的全局名稱空間,其中包含您的頭文件。只需在頭文件中完全限定類型,即std::string,並且我會避免在實現文件中以及在大型項目中(儘管類似using std::string在實現文件中可以是IMO)。