2011-12-19 2 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)! –

답변

5

생성자에서 선언 된 변수는 생성자 본문의 끝에서 범위를 벗어납니다. 이것은 다른 기능과 다르지 않습니다. 클래스의 모든 멤버 함수에 액세스 할 수있는 변수가 필요하면 변수를 멤버 변수로 만들어야합니다.

클래스 본문에서 선언하면됩니다. 예 :

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

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

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

아. 그건 의미가 있습니다. 감사! – Noah