C ++超出范围问题

时间:2011-01-03 12:27:43

标签: c++ scope

我创建了一个生成代码表的函数和另一个根据通过它传递的参数执行表查找的函数。例如

generateCodeTable(int x, int y);

tablelookup(int z);

我刚刚意识到generateCodeTable函数创建的变量超出范围,tablelookup()无法访问。我可以通过在调用generateCodeTable函数之前初始化变量来避免这种情况,但我想知道是否有更优雅的方法来实现它。

由于

3 个答案:

答案 0 :(得分:4)

有很多方法。您可以使两个函数都采用作为代码表的参数,并将同一个对象传递给两个函数

或者您可以创建一个包含数据的CodeTable类,并在其构造函数中执行generateCodeTable功能,并具有执行lookup功能的tablelookup成员函数。

答案 1 :(得分:1)

你知道上课吗?

struct MyCodeTable
{
  MyCodeTable(int x, int y)
  {
    // initialize your table
  }

  void lookup(int z)
  {
    // to something with your table
  }

private:
  std::map<YourKey, YourValue> table_; // or whatever the type of your table is
};

答案 2 :(得分:0)

如果方法是类的一部分,则使变量成为类的成员。如果方法不是一个类的一部分,那么不是制作全局变量和尝试其他东西(一个已经由Charles Bailey解释,我不打算再写),使用一个类。否则无法使用C ++。