我如何从其他函数访问主函数中的变量

How can i access variables in the main function from other function

我看过其他题目,答案通常是使用参数解决问题,但这不是我想要的方式。我是 C++ 的新手,我之前开发过 NodeJS。我们可以像在 NodeJS 中那样创建一个我们可以从我们想要的区域访问的变量吗?

string read_from_ram(string& key) {
   //how can I access and edit keysDB and valuesDB variables from here
}

int main(int argc, char* argv[]) {
    auto [keysDB, valuesDB] = read_from_disk();
}

您必须将这些变量传递给您的函数。这是每本教科书在第一章都会告诉你的事情。

猜测类型,这可能是你想要的:

std::string read_from_ram(const std::string& key,
        const std::vector<std::string>& keys,
        const std::vector<std::string>& values)
{
   // access keys and values here
}

int main(int argc, char* argv[])
{
    auto [keysDB, valuesDB] = read_from_disk();
    auto foo = read_from_ram("foo", keysDB, valuesDB);
}

您也可以将它们设为全局,但这可能是一个糟糕的设计选择。

No。您必须按照当前编写的方式将 pointer/reference 传递给函数,或者将其设置为全局变量(除非问题范围需要,否则通常不赞成)。

另一个可能的想法是制作一个对象。

class MyClass { 
  private:
    string key;
  public:            
    string read_from_ram(string& key) {};
};

在这种情况下,key 可以从您 class 内的任何地方访问。

如果我没理解错的话,那么你想要全局访问一个变量。如果是这种情况,那么您只需定义一个全局变量,这意味着在所有函数之外定义一个变量,通常这是在您的 includes 下完成的。警告:通常你应该避免使用全局变量,因为它们可以在程序的任何地方进行操作,而且通用名称也很危险。