实在看晕了,哪位大侠能够把这些宏定义改成易懂的代码,高分相赠.
#define PDECLARE_CLASS(cls, par) class cls : public par {
#define PBASEARRAY(cls, T) typedef PBaseArray<T> cls
#define PDECLARE_BASEARRAY(cls, T) \
PBASEARRAY(PBaseArray_##cls, T); \
PDECLARE_CLASS(cls, PBaseArray_##cls) \
cls(int initialSize = 0) \
: PBaseArray_##cls(initialSize) { } \
cls(T const * buffer, int length, BOOL dynamic = TRUE) \
: PBaseArray_##cls(buffer, length, dynamic) { } \
virtual PObject * Clone() const \
{ return new cls(*this, GetSize()); } \
PDECLARE_BASEARRAY(Table, Element *)
问题点数:100、回复次数:6Top
1 楼flyelf(空谷清音)回复于 2004-09-03 22:45:45 得分 0
把这些宏一一替换吧Top
2 楼show(等我轻舞飞扬(抵制日货))回复于 2004-09-03 22:47:47 得分 0
我就是有点看不明白了,谁能帮我替换一下呀?
主要中间有一个##的部分我不知道是什么意思 。Top
3 楼yzx0023(无聊客)回复于 2004-09-03 22:50:32 得分 0
#define paster( n ) printf( "token" #n " = %d", token##n )
int token9 = 9;
If a macro is called with a numeric argument like
paster( 9 );
the macro yields
printf( "token" "9" " = %d", token9 );
which becomes
printf( "token9 = %d", token9 );
Top
4 楼yzx0023(无聊客)回复于 2004-09-03 22:50:59 得分 0
这是MSDN的例子,应该很好明白吧Top
5 楼kvls(冰茶)回复于 2004-09-03 22:52:21 得分 100
typedef PBaseArray<Element *> PBaseArray_Table;
class Table : public par
{
Table(int initialSize = 0) : PBaseArray_Table(initialSize) {}
Table(Element const *buffer, int length, BOOL dynamic = TRUE)
: PBaseArray_Table(buffer, length, dynamic) {}
virtual PObject *Clone() const {return new Table(*this, GetSize());}
};
PS:不知道有没有写错的地方,我BF正在看俄罗斯人质危机,他不帮我看,这是我自己写的。Top
6 楼show(等我轻舞飞扬(抵制日货))回复于 2004-09-03 23:57:16 得分 0
我想可能是这样的吧,非常感谢冰茶的帮助,给分了。Top




