在理解类结构中的变量范围时遇到一些麻烦。
我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数。我想到只是在构造函数中定义它们会起作用,但是我的编译器(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...
}
答案 0 :(得分:5)
构造函数中声明的变量超出构造函数体末尾的范围。这与其他功能没什么不同。如果您想要一个类的所有成员函数都可以访问的变量,那么您应该将它们作为成员变量。
您可以通过在类体中声明它们来完成此操作。 E.g。
class myClass {
public:
myClass() {
foo.resize(10,0);
}
void myFunc(); // now has access to foo
private:
std::vector<int> foo;
};