[英]My priority_queue's objects keep registering as overflowed
感謝您的意見,但此問題已解決! 我沒有正確順序的參數。 晚上好!
出於某些原因,名為TimerEvent的類中的對象保持設置
error C2665: 'TimerEvent::TimerEvent' : none of the 2 overloads could convert all the argument types
但據我所知,沒有過載。
請查看代碼,如果您有任何見解,請告訴我。 泰
class TimerEvent {
public:
char primary;
int secondary;
string item;
int socketno;
int eventnumber;
int expirytime;
bool eventvalid;
TimerEvent(string td, int sno = 0, int evnum = 0, int exptime = 0, bool evvalid = false, char pri = 'A', int sec = 1)
: primary(pri), secondary(sec), socketno(sno), eventnumber(evnum), expirytime(exptime), eventvalid(evvalid), item(td) {}
friend bool operator<(
const TimerEvent& x, const TimerEvent& y) {
if(x.primary > y.primary)
return true;
if(x.primary == y.primary)
if(x.secondary > y.secondary)
return true;
return false;
}
friend ostream&
operator<<(ostream& os, const TimerEvent& td) {
return os << td.primary << td.secondary
<< ": " << td.item << td.socketno << td.eventnumber << td.expirytime << td.eventvalid;
}
};
這是另一半
if( comsent.compare( "test" ) == 0 ) {
timerqueue.push(TimerEvent( 'A', 2, 10, 1, 0, true, "Alright"));
// The above is setting the error
cout << " Top Value Is: " << timerqueue.top().socketno << endl;
}
在該類中,您定義構造函數以使其第一個參數作為string
,但是在構造對象時,您傳遞的是字符而不是字符串。 您還將字符串作為參數pri
傳遞,該字符串在定義中為char
。
這是一個簡單的例子,其中包含許多參數,並且不記得確切的順序。 嘗試使用較少參數的構造函數,並在構造后添加函數以設置值。 它將使用更多的代碼行,但將來會更具可讀性。
正式地, TimerEvent::TimerEvent
有兩個重載:您定義的構造函數和復制構造函數。 出於重載的目的,還有更多,因為默認參數的存在被視為重載。 鑒於此,編譯器將考慮以下重載:
TimerEvent( string, int, int, int, bool, char, int )
TimerEvent( string, int, int, int, bool, char )
TimerEvent( string, int, int, int, bool )
TimerEvent( string, int, int, int )
TimerEvent( string, int, int )
TimerEvent( string, int )
TimerEvent( string )
TimerEvent( TimerEvent const& )
在push語句中,您可以調用:
TimerEvent( char, int, int, int, int, bool, char const[] )
第一個參數和最后一個參數都無法匹配:無法將char
轉換為string
或TimerEvent
,也無法將char const[]
轉換為int。 一些要求是令人驚訝的,以及其他的轉換:第五個參數需要int
到bool
轉換(意想不到用於一個文字),和第六一個bool
到char
(非常非常意外的,導致在任一'\\0'
或'\\1'
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.