C++ C++;重置构造函数值
我的程序中有一个do循环,每次循环发生时我都需要重置值(来自构造函数),直到用户退出程序。我的问题是:如何使函数在每次循环发生时重置值(een,old) 我已经在下面提供了答案,并通过回答我自己的问题在页面末尾给出了解释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
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谢谢,我尝试了你的两个建议,但程序仍然没有重置值@谢谢你,你的回答让我有了不同的想法:)