例如,如果我想通過如何將類的重載操作符成員作爲函數指針傳遞?
ostream& std::ostream::operator << (int i);
到作爲
void func(ostream& (*out)(int), ...);
那麼我將如何去這樣做,這樣的功能呢?
做
func(std::ostream::operator << (int))
肯定不工作,
typedef ostream& (*out)(int);
out o = std::ostream::operator << (int);
func(o);
試圖分配:○當拋出一個編譯時錯誤。那麼如何指出重載操作符? (鑄造鍵入了不在這種情況下工作,要麼)
的代碼打轉轉後,我現在的問題是這樣的:那爲什麼非成員,重載運算符,即
ostream& operator << (ostream&, classX)
返回一個void *而不是指向函數的指針?
如果我做
typedef ostream& (*out)(ostream&,classX);
我只能讓它
void* v = ostream& operator << (ostream&,classX);
,而不是
out o = ostream& operator << (ostream&,classX);
它打印錯誤訊息
190: error: invalid conversion from 'void*' to 'std::ostream& (*)(std::ostream&, classX)'
這裏的問題不是你試圖給函數指針指定一個非靜態成員函數嗎? –
是的。但爲什麼這會阻止指向非靜態成員函數?是否因爲所有非靜態成員都是實例化依賴的? – Ali
您能提供編譯器錯誤消息嗎? – Manu343726