【发布时间】:2023-03-31 08:25:01
【问题描述】:
我有一个抽象基类 A 和一组 10 个派生类。中缀运算符在所有派生类中都被重载
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>::basic_ios' : 无法访问私有成员 在课堂上声明 'std::basic_ios<_elem>'
谢谢, 悟空。
【问题讨论】:
-
您遇到了什么问题?是没有编译,还是没有做你想做的事?
-
@Alex:我已经更新了错误的帖子