【发布时间】:2019-12-01 21:30:11
【问题描述】:
我正在编写一个程序,你可以给一个对象一个整数,它会计算下一个更大的素数。任务是重载前缀运算符并在构造函数中使用它,这样如果我创建一个对象并给它数字 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
}
我现在尝试了很多方法,但我总是得到一个常规增量......运算符重载出现在构造函数之前,但我也尝试将构造函数放在重载之前,但都不起作用。我还能做什么?
【问题讨论】:
-
你可以在构造函数中调用
++(*this)。它将在当前对象上调用前缀运算符。
标签: c++ constructor overloading operator-keyword