将对象传递给函数是否可以?

时间:2012-09-05 12:37:27

标签: boost

问题是这样的:   我尝试使用class progress_display(boost / progress.hpp)来计算和显示我的程序的进度。   正确使用课程:

1.Instantiation: progress_display pd(count);
2.for(  ;  ;  ){
       pd++;
    }
3.With the increment of 'pd', the progress is display in console in real-time.

我的麻烦:   执行大部分计算的核心功能是迭代函数,我尝试将对象'pd'传递给该函数,以便在子迭代函数的执行完成时,对象'pd'将执行“ ++“操作。

#include<Windows.h>
#include<boost/progress.hpp>
using namespace std;
using namespace boost;

void functest(progress_display pdInput){
    pdInput++;
}
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> L;
    progress_display pd(100);
    functest(pd);
    return 0;
}

但是,出现错误:错误C2248:“boost :: noncopyable _ :: noncopyable :: noncopuable”:无法访问私有成员(在类“boost :: noncopyable _ :: noncopyalbe”中声明)。

我仍然不知道这个错误是来自实例化对象的错误用法,它会出现在所有常见的类中,还是所有关于导入的boost库的?

感谢任何能给我更多有用信息的人!

1 个答案:

答案 0 :(得分:1)

无法复制类progress_display,因此请勿按值将其作为参数传递。通过[const]引用或通过指针传递。