Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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++_Visual Studio_Header_Integer_Declaration - Fatal编程技术网

C++ 什么时候应该在头文件中声明变量?

C++ 什么时候应该在头文件中声明变量?,c++,visual-studio,header,integer,declaration,C++,Visual Studio,Header,Integer,Declaration,这个类有很多函数(大约30个),每个函数声明一个新的整数值,用于存储从堆栈到整数的字符串转换的值。这意味着我在同一个类中多次声明新整数 下面是一个声明这些整数的函数示例: void Interpreter::add() { val1 = std::stoi(stack.back()); stack.pop_back(); val2 = std::stoi(stack.back()); stack.pop_back(); stack.push_back(s

这个类有很多函数(大约30个),每个函数声明一个新的整数值,用于存储从堆栈到整数的字符串转换的值。这意味着我在同一个类中多次声明新整数

下面是一个声明这些整数的函数示例:

void Interpreter::add()
{
    val1 = std::stoi(stack.back());
    stack.pop_back();
    val2 = std::stoi(stack.back());
    stack.pop_back();

    stack.push_back(std::to_string(val1 + val2));
}

class Interpreter 
{
private:
    int val1, val2;

}
我的问题是:在头文件中只声明一次这些变量,然后在每个函数中重复使用它们是否更好


我想知道在这个问题上是否有某种约定。

不要仅仅为了节省键入时间而使用成员变量–您将遇到难以找到的bug

加上一点抽象

int Interpreter::pop() 
{ 
    // Add error handling here.
    int i = std::stoi(stack.back());
    stack.pop_back();
    return i;
}

void Interpreter::push(int i)
{
    stack.push_back(std::to_string(i));
}
然后你就可以写了

void Interpreter::add()
{
    push(pop() + pop());
}

这不是很清楚,你能用至少几行代码更新你的帖子吗?当然。我道歉!两个流行的约定是“声明变量尽可能接近它们的用途”和“不要仅仅为了保存击键而添加成员变量”。我添加了一些代码。我希望现在能更好地理解我的问题。感谢您在@molbdnilo上的这些约定,但它还不能完全回答我的问题。更重要的问题是,为什么要使用一堆字符串来进行整数运算。有了一堆整数,还有你自己的“pop函数”,这将不是问题。谢谢!这正是我需要的!我很高兴你得到了你的解决方案,谢谢你的分享,如果你把它们作为答案,我将不胜感激,这将有利于其他社区。