在构造函数中创建一个变量

creating a variable in the constructor

本文关键字:一个 变量 构造函数 创建      更新时间:2023-10-16

在理解类结构中的变量作用域时遇到一些困难。

我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数。我认为只要在构造函数中定义它们就可以了,但是我的编译器(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...
}

构造函数中声明的变量在构造函数体末尾超出作用域。这和其他函数没什么不同。如果你想要一个类的所有成员函数都可以访问的变量,你应该让它们成为成员变量。

可以通过在类体中声明它们来实现。例如

class myClass {
public:
    myClass() {
        foo.resize(10,0);
    }
    void myFunc(); // now has access to foo
private:
    std::vector<int> foo;
};