【问题标题】:creating a variable in the constructor在构造函数中创建变量
【发布时间】:2012-01-23 22:21:26
【问题描述】:

在理解类结构中的变量范围时遇到了一些麻烦。

我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数。我认为只在构造函数中定义它们就可以了,但是我的编译器 (g++) 给了我一个错误:'foo' is not declared in this scope.

有人能解释一下这个微不足道的问题吗?

这里有一些虚拟代码来说明我正在尝试做的事情。

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...
}

【问题讨论】:

标签: c++ class scope


【解决方案1】:

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

您可以通过在类主体中声明它们来做到这一点。例如

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

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

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

【讨论】:

  • 啊。这就说得通了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
相关资源
最近更新 更多