0
,因爲我不允許使用的std :: string對我使用所謂的charstring類型爲那些情況下,我不能初始化它自己的包裝定製類的任務。操作>>對於一個char指針包裝
類看起來是這樣的:
struct CharString {
char* str;
CharString() : str() {} // Initialize NULL
~CharString() { free(str); }
// Conversions to be usable with C functions
operator char**() { return &str; }
operator char*() { return str; }
};
然而,當我想用就可以了>>我碰到下面的錯誤。
binary '>>': no operator found which takes a right-hand operand of type 'utils::CharString' (or there is no acceptable conversion).
我如何使用操作符重載>>
?
CharString operator>>(std::istream& is) {
is >> str;
return *this;
};
我嘗試了上面的但仍然給我同樣的錯誤。
我想我需要把這個在我的charstring類型結構,但這種藏漢給我的錯誤:'當我使用這兩個參數不能只超載或'這個操作符function'太多的參數使用IStream的時候返回類型alone'區分功能。 – IMarks
這應該是一個朋友功能,而不是一個成員函數。確保在課堂外聲明它,然後在課堂內爲它添加一個朋友聲明。 – templatetypedef