2011-12-19 147 views
1

在理解類結構中的變量作用域時遇到了一些問題。在構造函數中創建變量

我想在類構造函數中創建一些變量,然後讓它們可用於該類中的函數。我想認爲,只是在構造函數中定義它們會工作,但我的編譯器(g ++)給了我一個錯誤:'foo'沒有在此範圍內聲明。

有人可以澄清這個微不足道的問題嗎?

下面是一些虛擬代碼來說明我正在嘗試做什麼。

myClass.h 
using namespace std; 
class myClass{ 

public: 
    myClass(){ 
     std::vector<int> foo; 
     foo.resize(10,0); 
    }; 

    void myFunc(); 
} 

myClass.cpp 
void myClass::myFunc(){ 
    std::cout << foo[1] << end; 
    // etc... 
} 
+7

時間爲[好書在C++](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)! – 2011-12-19 20:40:59

回答

5

構造函數中聲明的變量超出構造函數主體結尾處的範圍。這與其他功能沒有什麼不同。如果你想要一個類的所有成員函數都可以訪問的變量,你應該使它們成爲成員變量。

你可以通過在類體中聲明它來做到這一點。例如。

class myClass { 
public: 
    myClass() { 
     foo.resize(10,0); 
    } 

    void myFunc(); // now has access to foo 

private: 
    std::vector<int> foo; 
}; 
+0

啊。這就說得通了。謝謝! – Noah 2011-12-19 21:09:17