2016-11-20 118 views
-4

我試圖超載運算符< < on函數。我堅持了幾個堅實的時間試圖弄清楚這一點。我發現了很多示例如何在ostream上執行此操作,但沒有一個針對我的具體問題。試圖超載<<類功能

#include <iostream> 

class foo 
{ 
public: 
    foo& operator<< (foo& (*pf)(foo&)) 
    { 
    return pf(*this); 
    } 
    foo& do_something_more(foo& os) 
    { 
    return os; 
    } 
}; 

ostream& do_something(ostream& os) 
{ 
    os << "1." << "\n" << "2."; 
    return os; 
} 

int main() 
{ 
    foo a; 

    std::cout << do_something; // this works 
    a << do_something_more; // this do not 

    system("pause"); 
    return 0; 
} 

這只是我試圖解決這個問題的一個例子。我得到錯誤'do_something_more':在這一個中的未聲明標識符

感謝您的幫助!

+1

'do_something_more()'是'foo'的成員函數,您需要一個實例來調用它。 –

+0

或者使其成爲靜態的並使用'a << foo :: do_something_more;'...或者只是非成員。 – LogicStuff

+2

沒有什麼東西真的有道理。 –

回答

-4

如錯誤所述,您尚未聲明任何名爲do_something_more的對象。這是你的foo類中的一個方法。嘗試cout<<a.do_something_more();

即使這樣,我不確定它是否會工作。

+2

您先嚐試一下。 – LogicStuff

+0

請原諒赦免? – Javi