看看我错在哪了,急呀!(在线,立刻给分)
#ifndef MTDEQUE_H
#define MTDEQUE_H
#include <deque>
#include <windows.h>
class MTdeque
{
protected:
const m_iMaxSize;
deque<char> m_Queue; \\*********出错**********
CRITICAL_SECTION m_Lock;
public:
MTdeque(int max_szie):m_iMaxSize(max_size)
{
::InitializeCriticalSection(&m_Lock);
}
~MTdeque()
{
::DeleteCriticalSection(&m_Lock);
}
int SpaceFree()
{
::EnterCriticalSection(&m_Lock);
int size=m_iMaxSize-m_Queue.size();
::LeaveCriticalSection(&m_Lock);
return(size<0)?0:size;
}
int SpaceUsed()
{
::EnterCriticalSection(&m_Lock);
int size=m_Queue.size();
::LeaveCriticalSection(&m_Lock);
return size;
}
int Insert(char c)
{
int return_value;
::EnterCriticalSection(&m_Lock);
if(m_Queue.size()<m_iMaxSize)
{
m_Queue.push_back(c);
return_vlaue=c & 0xff;
}
else
return_value=-1;
::LeaveCriticalSection(&m_Lock);
return return_value;
}
int Insert(char *data,int count)
{
::EnterCriticalSection(&m_Lock);
int actual=m_iMaxSize-m_Queue.size();
if(actual<0)
actual=0;
if(count<actual)
actual=count;
for(int i=0;i<actual;i++)
m_Queue.push_bakc(*data++);
::LeaveCriticalSection(&m_Lock);
return actual;
}
int Extract(char *data,int max)
{
int i=0;
::EnterCriticalSection(&m_Lock);
while(i<max && m_Queue.size())
{
data[i++]=m_Queue.front();
m_Queue.pop_front();
}
::LeaveCriticalSection(&m_Lock);
return i;
}
int Peek(char *data,int max)
{
::EnterCriticalSection(&m_Lock);
if(max>m_Queue.size())
max=m_Queue.size();
for(int i=0;i<max;i++)
data[i]=m_Queue.begin()[i];
::LeaveCriticalSection(&m_Lock);
return i;
}
int Extract()
{
int ret_val=-1;
::EnterCriticalSection(&m_Lock);
if(m_Queue.size())
{
ret_val=m_Queue.front() & 0xff;
m_Queue.pop_front();
}
::LeaveCriticalSection(&m_Lock);
return ret_val;
}
void Clear()
{
::EnterCriticalSection(&m_Lock);
m_Queue.clear();
::LeaveCriticalSection(&m_Lock);
}
};
#endif
e:\项目1-modem类-用tcommport类写0408\mtdeque\mtdeque.h(7) : error C2143: syntax error : missing ';' before '<'
e:\项目1-modem类-用tcommport类写0408\mtdeque\mtdeque.h(7) : error C2501: 'deque' : missing storage-class or type specifiers
e:\项目1-modem类-用tcommport类写0408\mtdeque\mtdeque.h(7) : error C2059: syntax error : '<'
e:\项目1-modem类-用tcommport类写0408\mtdeque\mtdeque.h(7) : error C2238: unexpected token(s) preceding ';'
问题点数:50、回复次数:6Top
1 楼rushing(勇敢的心)回复于 2002-04-12 16:56:58 得分 0
deque<char> m_Queue;
不能用 < >Top
2 楼zxs218(Frank Zhou)回复于 2002-04-12 16:56:58 得分 50
使用它了吗?
using namespace std;Top
3 楼rushing(勇敢的心)回复于 2002-04-12 16:57:37 得分 0
#include <deque.h>
Top
4 楼zxs218(Frank Zhou)回复于 2002-04-12 16:58:13 得分 0
例子:
//////////////////////////////////////////////////////////////////////
//
// Compile options needed: -GX
//
// deque.cpp :
//
// Functions:
//
// assign
// swap
// begin
// end
//////////////////////////////////////////////////////////////////////
/* Compile options needed:-GX
*/
#include <iostream>
#include <deque>
using namespace std;
typedef deque<char > CHARDEQUE;
void print_contents (CHARDEQUE deque, char*);
void main()
{
//create a with 3 A's
CHARDEQUE a(3,'A');
//create b with 4 B's.
CHARDEQUE b(4,'B');
//print out the contents
print_contents (a,"a");
print_contents (b,"b");
//swap a and b
a.swap(b);
print_contents (a,"a");
print_contents (b,"b");
// let us swap it back
a.swap(b);
print_contents (a,"a");
print_contents (b,"b");
//assign the contents of b to a
a.assign(b.begin(),b.end());
print_contents (a,"a");
//assign the first two items of b to a
a.assign(b.begin(),b.begin()+2);
print_contents (a,"a");
//assign 3 'Z's to a
a.assign(3,'Z');
print_contents (a,"a");
}
//function to print the contents of deque
void print_contents (CHARDEQUE deque, char *name)
{
CHARDEQUE::iterator pdeque;
cout <<"The contents of "<< name <<" : ";
for(pdeque = deque.begin();
pdeque != deque.end();
pdeque++)
{
cout << *pdeque <<" " ;
}
cout<<endl;
}
Top
5 楼SeaFish(咸鱼)回复于 2002-04-12 16:59:26 得分 0
to zxs218(Frank Zhou) :
没有,怎么用的?
to rushing:
<deque>没错!Top
6 楼fiolin(幽深的水)回复于 2002-04-12 17:00:35 得分 0
少头文件了!! 可能是 #include "afxtempl.h"Top
7 楼SeaFish(咸鱼)回复于 2002-04-12 17:01:55 得分 0
thanks,对了,给分Top




