我有一个抽象基类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