C++ C++;重置构造函数值

C++ C++;重置构造函数值,c++,loops,constructor,reset,do-while,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

我的程序中有一个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;
}
NNew类
{
私人:
年幼的,年老的;
公众:
NNew(整数nn,整数oo)
{
een=nn;
old=oo;
}
无效更新(整数n)
{
een=n;
}
作废旧版(INTO)
{
old=o;
}
无效重置()
{
een=0;
old=0;
}
};
int main()
{
char answer1,answer2;
int n,o;
NNew*对象=新的NNew(10100)
做
{
答案1
如果(回答为“是”)
{
做
{
(程序要求用户输入n和o…)
}while(答案2!='q');
}
对象->重置();
}while(回答1!=“否”);
删除对象;
对象=0;
返回0;
}

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

do
{
    NNew object(10,100);

    ...
} while (...);
或者如果它必须在堆上:

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

    ...

    delete object;
} while (...);

按照您的方式,新的NNew对象是在循环的每次迭代中创建的,如果您希望在每次迭代中保持相同的对象,您可以尝试在do…while循环之前创建NNew对象


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

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

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


< P> <强>我在问题中提供的示例代码实际上是有效的,并且可以用它重置构造函数值。<> />

<代码>新< /Cord>是C++中的关键字。它不能用作常规标识符。你知道我问题的答案吗?tnx只需为
new
old
添加一个setter函数,因为您可以向用户提示新值。并选择将实际编译的变量名。在您进行编译时,请注意您收到的编译器警告,即
'yes'
'no'
没有执行您认为它们会执行的操作。C/C++中的比较不是用
=
完成的;这是赋值运算符。@RedAlert,你能告诉我如何只使用重置功能吗?我知道怎么做。但是,我正在尝试构造,我正在尝试找出如何使用函数重置初始构造函数中的值?可能不是真正的问题-请注意,除了外部循环外,还有一个内部的
do
循环。@jonvw谢谢,我尝试了你的两个建议,但程序仍然没有重置值@谢谢你,你的回答让我有了不同的想法:)