在构造函数中创建变量

Noa*_*oah 1 c++ scope class

理解类结构中的变量范围有些困难.

我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数.我认为只在构造函数中定义它们会起作用,但是我的编译器(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...
}
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 5

在构造函数中声明的变量超出构造函数体末尾的范围.这与其他功能没什么不同.如果您想要一个类的所有成员函数都可以访问的变量,那么您应该将它们作为成员变量.

您可以通过在类体中声明它们来完成此操作.例如

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

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

private:
    std::vector<int> foo;
};
Run Code Online (Sandbox Code Playgroud)