編輯ambigous來電:我張貼全班同學(條紋數的誤差不相干的東西了)Visual Studio的C++來重載函數
我做了下面的類:
class packet
{public:char * buffer;
int size;
int data;
packet();
packet(packet &text, int length=-1);
packet(char * text, int length=-1);
packet(int val);
packet(char c);
packet(double d);
packet(float f);
~packet();
packet & operator= (packet &text);
packet operator+ (packet &text);
packet & operator+= (packet &text);
packet & operator|= (packet &text);
bool operator== (packet &text);
bool operator*= (packet &text);
bool operator!= (packet &text);
operator char* () const;
operator int () const;
operator float () const;
char operator [] (int pos) const;
};
而且我用的是類像這樣:
packet p = packet();
或
return packet();
和Visual Studio給了我這個錯誤:
test.cpp(162): error C2668: 'packet::packet' : ambiguous call to overloaded function
...packet.h(26): could be 'packet::packet(float)'
...packet.h(23): or 'packet::packet(int)'
...packet.h(22): or 'packet::packet(char *,int)'
有誰知道我做錯了什麼?爲什麼這種模糊?
PS:我認爲它與4個運營商在底部做的,但我對那些超載運營那種一點點朦朧......
解決方案:我得到了它的標記部分構造爲工作明確:
class packet
{public:char * buffer;
int size;
int data;
packet();
packet(packet &text, int length=-1);
explicit packet(char * text, int length=-1);
explicit packet(int val);
explicit packet(char c);
explicit packet(double d);
explicit packet(float f);
~packet();
packet & operator= (packet &text);
packet operator+ (packet &text);
packet & operator+= (packet &text);
packet & operator|= (packet &text);
bool operator== (packet &text);
bool operator*= (packet &text);
bool operator!= (packet &text);
operator char* () const;
operator int () const;
operator float () const;
char operator [] (int pos) const;
};
你確定這是你的整個代碼? – 2011-12-23 16:36:28
我確定它不是整個代碼。我的猜測是,他正在傳遞'0'或'NULL'給構造函數,像'packet(0)'或'packet(NULL)'。 – Nawaz 2011-12-23 16:37:05
顯示實際的代碼。 – 2011-12-23 16:37:18