1.2 关键词所带来的差异(A Keyword Distinction)
这段看得不是很明白,感觉
struct CA
{
...
}
和
class
{
public:
...
}
是一样的.
re: 一个type2id的程序 橙子 2008-03-08 22:28
可有看过《C++设计新思维》 ?
里面有一章Typtlist,专门讲这个。你这个看起来很高深。
re: 读后感:Doom启世录 橙子 2006-08-23 17:58
能给我发一个吗? 我找了好久没找到.
谢谢!
eyeonme@gmail.com
re: 小学喜欢的女孩 橙子 2006-04-13 14:02
早几天在同学录上看到她的相片,也没经过她的同意就转过来了. :)
hnhls99 .幸会幸会
re: 读vnc代码 橙子 2006-04-03 10:36
VNC的确是个好东东。 :)
去年在尝试把它改成UDP协议(可穿墙),后来因为别的事情担搁了。
希望与你继续讨论。
re: C++实现简单的类型库 橙子 2006-01-23 09:40
// .h
class DynamicFnBase {
public:
DynamicFnBase(const TCHAR* dllName, const TCHAR* fnName);
~DynamicFnBase();
bool isValid() const {return fnPtr != 0;}
protected:
void* fnPtr;
HMODULE dllHandle;
private:
DynamicFnBase(const DynamicFnBase&);
DynamicFnBase operator=(const DynamicFnBase&);
};
template<class T> class DynamicFn : public DynamicFnBase {
public:
DynamicFn(const TCHAR* dllName, const char* fnName) : DynamicFnBase(dllName, fnName) {}
T operator *() const {return (T)fnPtr;};
};
//---------------------------------------------------------------------------------
// .cpp
DynamicFnBase::DynamicFnBase(const TCHAR* dllName, const TCHAR* fnName) : dllHandle(0), fnPtr(0) {
TCHAR outinfo[500];
dllHandle = LoadLibrary(dllName);
if (!dllHandle) {
_stprintf(outinfo,_T("DLL %s not found (%d)"), dllName, GetLastError());
MessageBox(NULL,outinfo,_T("Dll Error"),0);
return;
}
fnPtr = GetProcAddress(dllHandle, fnName);
if (!fnPtr)
{
_stprintf(outinfo,_T("proc %s not found in %s (%d)"), fnName, dllName, GetLastError());
MessageBox(NULL,outinfo,_T("Dll Error"),0);
}
}
DynamicFnBase::~DynamicFnBase() {
if (dllHandle)
FreeLibrary(dllHandle);
}
//--------------------------------------------------------------------------------------
// test
typedef void (*WM_Hooks_proto)(UINT min, UINT max);
DynamicFn<WM_Hooks_proto> WM_Hooks(_T("hook.dll"), "WM_Hooks");
//--------------------------------------------------------------------------------------