我有一個抽象基類A和一組10個派生類。中綴運算符在所有派生類中都是超載的Boost綁定函數
class A{
public:
void printNode(std::ostream& os)
{
this->printNode_p();
}
protected:
virtual void printNode_p(std::ostream& os)
{
os << (*this);
}
};
有一個存儲基類指針的容器。我想使用boost :: bind函數來調用每個派生類中的重載中綴運算符。我這樣寫
std::vector<A*> m_args
....
std::ostream os;
for_each(m_args.begin(), m_args.end(), bind(&A::printNode, _1, os));
這段代碼有什麼問題?在Visual Studio我得到這樣的錯誤
錯誤C2248: '的std :: basic_ios < _Elem,_Traits> :: basic_ios' :不能訪問類 「的std :: basic_ios聲明私有成員 < _Elem,_Traits>'
謝謝, Gokul。
你有什麼問題呢?它不是在編譯,還是不在做你想要的? – 2010-04-06 02:08:33
@Alex:我更新了錯誤 – Gokul 2010-04-06 02:12:01