创建STXXL映射时会引发不可复制的错误

时间:2013-10-08 01:39:50

标签: c++ oop boost bigdata stxxl

我一直在用STXXL做一些工作,我遇到了从boost :: noncopyable继承的地图的问题......对于这个项目,我用语句创建了几个地图:

stxxl::map<int, mapData, CmpIntGreater, 4096, 4096> node_map((stxxl::unsigned_type)(4096 * 4), (stxxl::unsigned_type)(4096 * 3));

毋庸置疑,一旦我解决了这个问题,构造函数中的硬编码值就会被替换,但无论如何,我都会得到错误:

C2248: 'boost::noncopyable_::noncopyable::noncopyable' : cannot access private member declared in class 'boost::noncopyable_::noncopyable'

还有其他人遇到过STXXL地图的问题吗?或者在处理不可复制的对象时,是否有人有一些一般性建议或最佳实践?

感谢所有帮助人员:)

1 个答案:

答案 0 :(得分:0)

只是在这里添加一个正式答案接受,我的问题是我有一些函数按值返回映射,一些函数参数按值传递。一旦修复,它就像一个魅力!因此,故事的道德,当使用继承自noncopyable的STXXL版本时,请确保您的STXXL对象的所有实例仅通过引用而不是通过值与函数一起使用。