C ++重置构造函数值

时间:2014-05-07 18:03:14

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

我的程序中有一个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;
}

3 个答案:

答案 0 :(得分:2)

如果你想在循环的每次迭代中都有一个新的对象,你可以使用一个自动变量,让语言处理构造和破坏它,而不是担心手动重置它:

do
{
    NNew object(10,100);

    ...
} while (...);

或者它必须在堆上:

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

    ...

    delete object;
} while (...);

答案 1 :(得分:1)

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

仅当您在堆上创建对象(即使用新关键字)时,您应该在完成后删除它。

答案 2 :(得分:0)

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

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

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