高手请进,帮我看看这是什么意思?感谢非常

xtge 2001-07-17 09:48:27
class MTDeque
{
protected :
const m_iMaxSize;
deque<char> m_Queue;
CRITICAL_SECTION m_Lock;

public:
MTdeque( int max_size ) : m_iMaxSize( max_size )
{
::InitializeCriticalSection( &m_Lock );
}
//
// The destructor for the m_Queue member will take care
// of properly cleaning up all of its data. We have to
// make sure we use the API call to properly free up
// the CRITICAL_SECTION object. And that's all!
//
~MTdeque()
{
::DeleteCriticalSection( &m_Lock );
}
}
...全文
460 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
han012 2001-07-17
别客气,关于加分我也不大清楚,可能是这样,
进入论坛,找到本帖,然后选择帖子后的"管理"功能,
再后你就自己研究吧.
回复
xtge 2001-07-17
OK?
回复
xtge 2001-07-17
非常感谢“han012(阿毛)”!!!那些问题统统不见了,怎么给你加分?
我犯了这麽个低级错误,呵呵 
回复
xtge 2001-07-17
谢谢!!!,我改改看....
回复
han012 2001-07-17
e:\work\vc\pzmodex\mtdeque.h(32) : error C2523: 'MTDeque::~MTdeque' : destructor tag mismatch

先将类的名字 "MTDeque" 与其中构造函数"MTdeque",析造函数 "~MTdeque" 统一.
C++大小写敏感, 不能将 字母 'D' 与 'd' 混淆.

其他错误,等你改正这个命名错误后再说.


回复
xtge 2001-07-17
是的,这不是完整的代码。在构造了这个类后,在其他地方引用(Win32Port.cpp,Win32Port.h)时,编译是出现如下错误,:请问能否对其中错误出现的关键原因给予解答,谢谢!
e:\work\vc\pzmodex\mtdeque.h(22) : error C2327: 'MTDeque::m_iMaxSize' : member from enclosing class is not a type name, static, or enumerator
e:\work\vc\pzmodex\mtdeque.h(22) : error C2065: 'm_iMaxSize' : undeclared identifier
e:\work\vc\pzmodex\mtdeque.h(22) : error C2065: 'max_size' : undeclared identifier
e:\work\vc\pzmodex\mtdeque.h(23) : error C2057: expected constant expression
e:\work\vc\pzmodex\mtdeque.h(23) : error C2656: 'MTdeque' : function not allowed as a bit field
e:\work\vc\pzmodex\mtdeque.h(25) : warning C4183: 'MTdeque': member function definition looks like a ctor, but name does not match enclosing class
e:\work\vc\pzmodex\mtdeque.h(32) : error C2523: 'MTDeque::~MTdeque' : destructor tag mismatch
e:\work\vc\pzmodex\win32port.h(69) : error C2146: syntax error : missing ';' before identifier 'm_TxQueue'
e:\work\vc\pzmodex\win32port.h(69) : error C2501: 'MTdeque' : missing storage-class or type specifiers
e:\work\vc\pzmodex\win32port.h(69) : error C2501: 'm_TxQueue' : missing storage-class or type specifiers
e:\work\vc\pzmodex\win32port.h(70) : error C2146: syntax error : missing ';' before identifier 'm_RxQueue'
e:\work\vc\pzmodex\win32port.h(70) : error C2501: 'MTdeque' : missing storage-class or type specifiers
e:\work\vc\pzmodex\win32port.h(70) : error C2501: 'm_RxQueue' : missing storage-class or type specifiers
E:\work\vc\Pzmodex\Win32Port.cpp(47) : error C2614: 'Win32Port' : illegal member initialization: 'm_RxQueue' is not a base or member
E:\work\vc\Pzmodex\Win32Port.cpp(47) : error C2614: 'Win32Port' : illegal member initialization: 'm_TxQueue' is not a base or member
E:\work\vc\Pzmodex\Win32Port.cpp(509) : error C2065: 'm_RxQueue' : undeclared identifier
E:\work\vc\Pzmodex\Win32Port.cpp(509) : error C2228: left of '.Peek' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(526) : error C2228: left of '.Clear' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(537) : error C2065: 'm_TxQueue' : undeclared identifier
E:\work\vc\Pzmodex\Win32Port.cpp(537) : error C2228: left of '.Clear' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(746) : error C2228: left of '.SpaceFree' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(748) : error C2228: left of '.Insert' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(770) : error C2228: left of '.Insert' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(800) : error C2228: left of '.Extract' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(835) : error C2228: left of '.Extract' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(1118) : error C2039: 'm_RxQueue' : is not a member of 'Win32Port'
e:\work\vc\pzmodex\win32port.h(28) : see declaration of 'Win32Port'
E:\work\vc\Pzmodex\Win32Port.cpp(1118) : error C2228: left of '.SpaceFree' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(1147) : error C2039: 'm_RxQueue' : is not a member of 'Win32Port'
e:\work\vc\pzmodex\win32port.h(28) : see declaration of 'Win32Port'
E:\work\vc\Pzmodex\Win32Port.cpp(1147) : error C2228: left of '.Insert' must have class/struct/union type
E:\work\vc\Pzmodex\Win32Port.cpp(1237) : error C2039: 'm_RxQueue' : is not a member of 'Win32Port'
回复
lindongy 2001-07-17
这是一个带有临界区(m_Lock)的类,在它的构造函数初始化了临界区,析构函数删除了该临界区。这样在该类可以用来做些同步操作。
具体的看看Windows的系统核心对象和同步。
回复
Tasehouny 2001-07-17
一个使用了临界区锁的对象
回复
han012 2001-07-17
仅仅从以上代码看,这是一个未完成的类,或是一个处于上层的类,还有其他类由此派生(个人看法).
代码中用到了CriticalSection,看来这的类的instance将被多个线程同时访问,所以需要同步访问其中的资源,m_Queue是其中的被访问资源.当任意线程访问m_Queue时,一般要使用以下方法;

CSingleLock sLock(&m_Lock );
sLock.Lock();
// access m_queue
...
sLock.Unlock();
回复
不解 2001-07-17
只是在类中增加了关键代码的操作,这是window 的基本同步对象之一。
回复
prettywolf 2001-07-17
:)
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-17 09:48
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……