[英]use of an overloaded operator in a constructor?
我正在写一个程序,你可以给一个对象一个整数,它会计算出下一个更大的素数。 任务是重载前缀运算符并在构造函数中使用它,这样如果我创建一个对象并给它数字 11,它应该存储下一个更大的素数 (13)。
我的运算符重载如下所示:
cPrimZahl& cPrimZahl::operator++()
{
nextprim = prim;
while (!is_Prime(nextprim))
{
++nextprim;
if (nextprim > 10000)
{
while (!is_Prime(nextprim))
{
--nextprim;
}
prim = nextprim;
break;
}
prim = nextprim;
}
cout << "die naechst groessere Primzahl ist: " << prim << endl;
return *this;
}
主要的:
int main(){
cPrimZahl obj(13); // The object here is 13 now
++obj1; // Here its 17
return 0;
}
我的构造函数:
cPrimZahl::cPrimZahl(int prim_in)
{
if (prim_in > maxprim) // maxprim = 10000
{
cout << "Prime number is to big! Adjusting..." << endl;
prim = 1;
}
else if (prim_in < 0)
{
cout << "Prime number can't be negative! Adjusting..." << endl;
prim = 1;
}
prim = prim_in;
++prim; // at this point i want it to increment to give me the next bigger prime number
}
我现在尝试了很多方法,但我总是得到一个规则的增量......运算符重载出现在构造函数之前,但我也尝试将构造函数放在重载之前,但都不起作用。 我还可以做些什么?
在构造函数中, prim
指的是prim
成员(大概是某种整数类型)。 因此, ++prim
正在为该整数类型使用内置的预递增运算符,这将使prim
成员递增 1。
您不想在prim
成员上调用预递增运算符,而是在当前对象本身上调用。
可以使用*this
获取当前对象,因此可以使用++(*this);
.
或者,您可以使用函数调用语法直接调用重载,将其视为普通成员函数: operator++();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.