【问题标题】:C++ Resetting Constructor ValuesC++ 重置构造函数值
【发布时间】:2014-05-07 18:03:13
【问题描述】:

我的程序中有一个 do 循环,每次循环发生时我都需要重置值(从构造函数),直到用户退出程序。我的问题是:如何在每次循环发生时创建一个函数来重置值(een,old)?

我通过回答我自己的问题在下面提供了答案,并在页面末尾提供了解释。

class NNew
{
private: 
    int een, old;
public:
    NNew(int nn,int oo)
    {
        een = nn;
        old = oo;
    }
    void newer(int n)
    {
        een = n;
    }
    void Older(int o)
    {
        old = o;
    }
    void reset()
    {
        een = 0;
        old = 0;
    }
};
int main()
{
    char answer1, answer2;
    int n,o;
    NNew *object = new NNew(10,100)
    do
    {
        cout << "Would you like to continue?" << endl;
        cin >> answer1
        if (answer = 'yes')
        {
            do
            {
                (program asks user for inputs for n and o...)
            } while(answer2 !='q');
        }
        object->reset();
    } while(answer1 !='no');
    delete object;
    object = 0;
    return 0;
}

【问题讨论】:

  • new 是 C++ 中的关键字。它不能用作常规标识符。
  • 你知道我的问题的答案吗? tnx
  • 只需为newold 添加一个setter 函数...因为无论如何您都会提示用户输入新值。并选择实际编译的变量名。
  • 当你在做的时候,也许注意你收到的关于'yes''no' 没有做你认为他们做的事情的编译器警告。并且 C/C++ 中的比较不是用 = 完成的;那是 assignment 操作符。
  • @RedAlert,你能告诉我如何只使用重置功能吗?

标签: c++ loops constructor reset do-while


【解决方案1】:

如果您希望在循环的每次迭代中都有一个新对象,您可以只使用一个自动变量,让语言处理构建和销毁它,而不用担心手动重置它:

do
{
    NNew object(10,100);

    ...
} while (...);

或者如果它必须在堆上:

do
{
    NNew* object = new NNew(10,100);

    ...

    delete object;
} while (...);

【讨论】:

  • 我知道该怎么做。但是,我正在尝试构造,并且试图找出如何使用函数来重置初始构造函数中的值?
【解决方案2】:

按照您的方式,每次循环迭代都会创建一个新的 NNew 对象,如果您想在每次迭代中保持相同的对象,您可以尝试在 do...while 循环之前创建 NNew 对象。

仅供参考,每当您在堆上创建对象时,即使用 new 关键字,您应该在完成后将其删除。

【讨论】:

  • 可能实际上不是问题 - 请注意,除了外部循环之外,还有一个内部 do 循环。
  • @jonvw 谢谢,我尝试了你的两个建议,但程序仍然没有重置值!
  • @jonvw 谢谢你的回答让我有了不同的想法:)
【解决方案3】:

感谢所有为找到解决方案做出贡献的人。

我的问题本身就有答案。我发现我的代码不起作用的主要原因是示例代码之外的一些基本问题。

我在问题中提供的示例代码确实有效,您可以使用它重置构造函数值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多