我如何从其他函数访问主函数中的变量
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
下完成的。警告:通常你应该避免使用全局变量,因为它们可以在程序的任何地方进行操作,而且通用名称也很危险。
我看过其他题目,答案通常是使用参数解决问题,但这不是我想要的方式。我是 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
下完成的。警告:通常你应该避免使用全局变量,因为它们可以在程序的任何地方进行操作,而且通用名称也很危险。