peakzhang 发表于 2008-1-14 21:13:49

编译问题

1>正在编译...
1>NSServer.cpp
1>c:\vs.net\ace_wrappers\ace\task_t.h(165) : error C2248: 'ACE_Task_Base::ACE_Task_Base' : cannot access private member declared in class 'ACE_Task_Base'
1>      c:\vs.net\ace_wrappers\ace\task.h(278) : see declaration of 'ACE_Task_Base::ACE_Task_Base'
1>      c:\vs.net\ace_wrappers\ace\task.h(66) : see declaration of 'ACE_Task_Base'
1>      This diagnostic occurred in the compiler generated function 'ACE_Task<_ACE_SYNCH>::ACE_Task(const ACE_Task<_ACE_SYNCH> &)'
1>      with
1>      [
1>            _ACE_SYNCH=ACE_MT_SYNCH
1>      ]
已经查明,但不知道怎么改?
是我在程序里面有一个这样的操作!
list<SBServer> m_lsSBServerPool;
SBServer sbserver;
m_lsSBServerPool.push_back(sbserver);
如果注释push_back这一行就没有问题了!
不知道大家有没有什么办法?

peakzhang 发表于 2008-1-14 21:14:20

貌似只能用指针,看看Task_T.h里的这一段:

private:

// = Disallow these operations.
ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Task<ACE_SYNCH_USE> &))
ACE_UNIMPLEMENTED_FUNC (ACE_Task (const ACE_Task<ACE_SYNCH_USE> &))

显然拒绝拷贝构造函数啊

peakzhang 发表于 2008-1-14 21:14:30

可它有一个有参数的构造函数,可以不用传参数的!

ACE_Task :

ACE_Task (ACE_Thread_Manager *thr_mgr = 0,
            ACE_Message_Queue<ACE_SYNCH_USE> *mq = 0);

ACE_Task_Base:

ACE_Task_Base (ACE_Thread_Manager * = 0);

都是public的!
页: [1]
查看完整版本: 编译问题