#pragma oncetemplate <class SAsync>class CVQueueAsync
{
public:
CVQueueAsync(void);
~CVQueueAsync(void);public:
SAsync* QAlloc();
SAsync* QGetFirst();
SAsync* QGetAt(int index);public:
int QSkip();
int QCount();private: SAsync m_asyncs[VTCP_ASYNC_MAX_COUNT]; int m_s; //开始索引
int m_c; //个数};template <class SAsync>CVQueueAsync<SAsync>::CVQueueAsync(void)
{
m_s=0;
m_c=0;
}template <class SAsync>CVQueueAsync<SAsync>::~CVQueueAsync(void)
{
}template <class SAsync>SAsync* CVQueueAsync<SAsync>::QAlloc()
{
if (m_c == VTCP_ASYNC_MAX_COUNT)
{
ASSERT(FALSE); return NULL;
} int index = (m_s + m_c) & VTCP_ASYNC_MAX_COUNT_MASK; m_c++; return &m_asyncs[index];
}template <class SAsync>SAsync* CVQueueAsync<SAsync>::QGetFirst()
{
if (0 >= m_c)
{
return NULL;
} return &m_asyncs[m_s];
}template <class SAsync>SAsync* CVQueueAsync<SAsync>::QGetAt(int index)
{
if (index >= m_c)
{
ASSERT(FALSE); return NULL;
} return &m_asyncs[(m_s + index) & VTCP_ASYNC_MAX_COUNT_MASK];
}template <class SAsync>int CVQueueAsync<SAsync>::QSkip()
{
if (m_c == 0)
{
ASSERT(FALSE); return ERROR_OBJECT_NOT_FOUND;
} m_s = (m_s + 1) & VTCP_ASYNC_MAX_COUNT_MASK;
m_c--; return 0;
}template <class SAsync>int CVQueueAsync<SAsync>::QCount()
{
return m_c;
}
求转换 VC到DELPHI版//重点是
public:
SAsync* QAlloc();
SAsync* QGetFirst();
SAsync* QGetAt(int index);
这个我不清楚怎么转换

解决方案 »

  1.   

    好像就是个数组?
    自己定义个数组就行了, 或者用TList, TStringlist之类的列表对象
      

  2.   

    如果仅仅转出delphi代码:
    type
      CVQueueAsync = class
      private
        m_asyncs: array [0..VTCP_ASYNC_MAX_COUNT-1] of SAsync;
      protected
      public
        constructor Create();
        destructor Destroy; override;
        function QAlloc(): SAsync;
      end;  
    ...
    function CVQueueAsync.QAlloc(): SAsync;
    begin
      result := nil;
    end;delphi中对象就是个指针.