[英]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.