Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除c+中的全局变量+;程序 我有一个C++程序,它有太多的函数和全局变量。现在,我想删除这些全局变量,我只想使用局部变量,而不是全局变量。有谁能建议我最好的方法吗。 谢谢 其在C++中的4000行程序。在这些不同的类中有10个类和60个函数,30个全局变量。全局变量在不同类的函数之间使用。_C++_Data Structures - Fatal编程技术网

删除c+中的全局变量+;程序 我有一个C++程序,它有太多的函数和全局变量。现在,我想删除这些全局变量,我只想使用局部变量,而不是全局变量。有谁能建议我最好的方法吗。 谢谢 其在C++中的4000行程序。在这些不同的类中有10个类和60个函数,30个全局变量。全局变量在不同类的函数之间使用。

删除c+中的全局变量+;程序 我有一个C++程序,它有太多的函数和全局变量。现在,我想删除这些全局变量,我只想使用局部变量,而不是全局变量。有谁能建议我最好的方法吗。 谢谢 其在C++中的4000行程序。在这些不同的类中有10个类和60个函数,30个全局变量。全局变量在不同类的函数之间使用。,c++,data-structures,C++,Data Structures,我建议一种解决方案,例如从全局范围中删除它们的声明,并将它们放在函数中 例: int hello; // global // remove it 现在,将其放入函数中: void func() { int hello; // local //... 我们有两个案例: 如果其他函数需要知道hello的值,则将该hello作为参数: 如果全局变量仅由单个函数使用,则可以使用静态局部变量 我通常首先将全局变量放在一个名称空间中 namespace global { int var;

我建议一种解决方案,例如从全局范围中删除它们的声明,并将它们放在函数中

例:

int hello; // global
// remove it
现在,将其放入函数中:

void func()
{
   int hello; // local
  //...
我们有两个案例:

如果其他函数需要知道
hello
的值,则将该
hello
作为参数:

如果全局变量仅由单个函数使用,则可以使用
静态
局部变量


我通常首先将全局变量放在一个名称空间中

namespace global
{
  int var;
  ...
}
这将导致您在使用“var”的任何位置都会出现错误,然后我将逐个替换对名称空间变量的引用。一旦所有全局变量引用都在名称空间中,就更容易看到哪些变量是局部变量,哪些是全局变量

if ( global::var == 1 ) ...
现在,通过搜索
global::var
您可以得到一个使用变量的列表,然后您需要逐案查看一个变量是否在多个模块中使用,在这些情况下,您可能需要将其作为函数参数传入,在其他情况下,请声明它是局部变量


这是一个很麻烦的方法,但是消除全局变量总是值得的。

我建议使用一个类。它们非常适合将变量和函数隐藏到一个组中并进行分类。以下是基本结构:

class example
{
public:
    example(); //basic constructor
    int function1();  //example function
    int x;  // a variable accesible globally
private:
    int y;  // a variable only accesible by functions of the class
};

调用每个函数很容易,但我不想解释,因为我不想开始一个文本墙。您可以转到此链接以了解更多信息:

您可以将这些变量放入aclass,然后首先创建指向该类对象的指针。将使用这些变量,然后将此指针传递给每个方法。需要这些变量时,不要忘了删除不使用的对象。

它有多大?你能把它扔掉并重写吗?我想你可以把你的代码发布到代码审查StackExchange网站上征求建议。注意静态!根据编译器设置,每个线程可能会获得不同的副本。此外,即使它们使用相同的存储,也要注意并发问题。这不包括不从func()中调用func2的情况。在这种情况下,两个函数都需要
hello
作为参数。此外,您还假设func2不需要更改其参数,而这并不总是预期的……在这种情况下,
hello
将在
main()
中声明并传递给这两个函数。由于
func2
的操作总是需要
hello
,因此它实际上根本不需要更改其参数。我在看到前半部分时投了反对票,但在阅读第二部分时将其删除。有趣的思考过程。当命名空间可以完成任务时,为什么要使用类?C++不是java,不是所有的东西都必须在一个类中。全局变量在不同类的函数之间使用,那么我如何在那里使用类呢?
class example
{
public:
    example(); //basic constructor
    int function1();  //example function
    int x;  // a variable accesible globally
private:
    int y;  // a variable only accesible by functions of the class
};