2011-12-19 191 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

相关问题