re: 函數(shù)指針實(shí)例 夢(mèng)在天涯 2008-05-23 14:14
another samples:
#include "stdafx.h"
class Object;
typedef int (Object::*MemFuncPtr)(int, int);
typedef int (*StaticMemFuncPtr)(int, int);
class Object
{
public:
// non-static member
int Add(int iFirst, int iSecond)
{
return iFirst + iSecond;
}
// static member
static int Sub(int iFirst, int iSecond)
{
return iFirst - iSecond;
}
//
typedef int (Object::*InClassMemFuncPtr)(int, int);
typedef int (*InClassStaticMemFuncPtr)(int, int);
};
int _tmain(int argc, _TCHAR* argv[])
{
// Test non-static Add
//
MemFuncPtr pfnMemFunc = &Object::Add;
// Need to bind the member function to a instance (need a this pointer)
Object test;
int res = (test.*pfnMemFunc)(1, 3);
// function call missing argument list; use '&Object::Add' to create a pointer to member
//MemFuncPtr pfnMemFunc1 = test.Add;
//res = (test.*pfnMemFunc1)(1, 3);
Object::InClassMemFuncPtr pfnMemFunc2 = &Object::Add;
res = (test.*pfnMemFunc2)(1, 3);
// Test Static Sub
//
// cannot convert from 'int (__cdecl *)(int,int)' to 'MemFuncPtr'
// Object::Sub Calling convention is __cdecl, but Object::*MemFuncPtr should be thisCall
// function signature include calling convention, parameter list and return value..
//pfnMemFunc = Object::Sub;
//res = (test.*pfnMemFunc)(1, 3);
StaticMemFuncPtr pfnStaticMemFunc = Object::Sub;
res = (*pfnStaticMemFunc)(1, 3);
StaticMemFuncPtr pfnStaticMemFunc1 = &Object::Sub;
res = (*pfnStaticMemFunc1)(1, 3);
Object::InClassStaticMemFuncPtr pfnStaticMemFunc2 = &Object::Sub;
res = (*pfnStaticMemFunc2)(1, 3);
// stl ? how to use this “function pointer”???
//std::mem_fun<int, Object>(&Object::Add);
//std::mem_fun<int, Object>(&Object::Sub);
return 0;
}
re: 函數(shù)指針實(shí)例 夢(mèng)在天涯 2008-05-23 12:33
成員函數(shù)指針:
#include "stdafx.h"
class CMemFuncPtr;
typedef int (CMemFuncPtr::*MemFuncPtr)(int, int);
class CMemFuncPtr
{
public:
int Add(int iFirst, int iSecond)
{
return iFirst + iSecond;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
MemFuncPtr pfnMemFunc = &CMemFuncPtr::Add;
CMemFuncPtr test;
(test.*pfnMemFunc)(1, 3);
return 0;
}
re: 服務(wù)器遷移預(yù)告 夢(mèng)在天涯 2008-05-19 09:46
恩,現(xiàn)在的速度超快 啊,感謝dudu!
@張某某
就想一般的函數(shù)重載一樣啊,你沒(méi)有重載那個(gè)版本的,你就不能用哦!
re: 今天去the9.com面試,一些考題,一些想法 夢(mèng)在天涯 2008-05-07 12:34
the9.com原來(lái)是第九城市啊!
haha,這個(gè)targetver.h只有在08才有的把!
re: 試試看博客園的blog~ 夢(mèng)在天涯 2008-04-29 17:59
haha ,csdn slow!
re: 談?wù)凜/C++和.NET以后的走向 夢(mèng)在天涯 2008-04-28 09:16
非常同意,學(xué)習(xí)了C++,其他的easy!
re: 談?wù)凜/C++和.NET以后的走向 夢(mèng)在天涯 2008-04-28 09:12
haha,現(xiàn)在的工作用C+++C#,覺(jué)得這連個(gè)可以了應(yīng)該吃飯沒(méi)有問(wèn)題把!
因?yàn)閞esult編譯器不知道是static變量還是類型,所以必須要typename來(lái)申明是類型!
re: 內(nèi)存池(version1.1) 夢(mèng)在天涯 2008-04-22 09:17
Modern C++ design有點(diǎn)高深哦!共同研究,共同進(jìn)步哦!非常感謝分享!
re: VC2008 竟然不帶 glaux.lib! 夢(mèng)在天涯 2008-04-21 09:41
不知道什么用的哦
還有可以通過(guò)CLI的封裝,可以看我的blog上有些資料啊!
re: Vector用法 夢(mèng)在天涯 2008-04-16 16:30
歡迎來(lái)到C++ blog!
以后多交流問(wèn)題!
re: C++、VC-迷茫 夢(mèng)在天涯 2008-04-16 15:01
看工作需要了,不過(guò)據(jù)統(tǒng)計(jì)現(xiàn)在用java的最多啊,但是學(xué)的人多了,工資不一定是最高的哦!
re: 兩個(gè)小巧的開(kāi)源解析庫(kù) 夢(mèng)在天涯 2008-04-16 14:59
以前用的tinyxml還挺好用的啊!~也很小!
re: 如何閱讀、使用Blog? 夢(mèng)在天涯 2008-04-16 09:14
我現(xiàn)在用www.inezha.com也很方便!
沒(méi)有更新會(huì)自動(dòng)發(fā)到我的msn上,一點(diǎn)就搞定可!
re: vc ++ 如何做界面開(kāi)發(fā)? 夢(mèng)在天涯 2008-04-16 09:12
也可以用。net開(kāi)發(fā)界面,也很方便!
re: 單元測(cè)試PPT講義 夢(mèng)在天涯 2008-04-09 09:19
修改代碼的藝術(shù),確實(shí)是藝術(shù)!
單元測(cè)試,難的是正真的在項(xiàng)目中實(shí)行!
一直沒(méi)有編過(guò),今天看lz說(shuō)的這么仔細(xì),太好了,以后有機(jī)會(huì)一定一試啊!
re: 猜猜看,id變成9了嗎? 夢(mèng)在天涯 2008-04-02 10:02
((TestStr)(*p_ts)).SetId(9); //編譯通過(guò)
((TestStr)(*p_ts)).id = 9; //編譯不通過(guò)
(&((TestStr)(*p_ts)))->id = 9; //編譯通過(guò)
我在VS2005下:
正如作者所說(shuō)中間的是編不過(guò)的,error,說(shuō)是l-value不能賦值。
但是能編過(guò)的2個(gè)結(jié)果都還是1,沒(méi)有修改了原來(lái)的值,因?yàn)樵陬愋娃D(zhuǎn)化的時(shí)候都調(diào)用了拷貝構(gòu)造函數(shù),從新生成一個(gè)對(duì)象你修改的是拷貝后的臨時(shí)對(duì)象。(你可以寫(xiě)拷貝構(gòu)造函數(shù)測(cè)試一下)
所以同意:
這其實(shí)相當(dāng)于調(diào)用了TestStr(const TestStr&)生成了一個(gè)TestStr&的臨時(shí)變量。
C++標(biāo)準(zhǔn)規(guī)定,類性轉(zhuǎn)換表達(dá)式的目標(biāo)類型為引用時(shí),結(jié)果為l-value;否則為r-value。
re: 搭建通用構(gòu)造器 夢(mèng)在天涯 2008-04-01 09:05
有新意!
可能是寫(xiě)的過(guò)程中有錯(cuò),所以你要flash一下io或重設(shè)io的狀態(tài)!
re: 工作Blog 夢(mèng)在天涯 2008-03-21 13:00
歡迎加入大家庭!
functor 確實(shí)是比STL中的一大堆好用多了!統(tǒng)一!
re: 分析stl function objects模塊 夢(mèng)在天涯 2008-03-14 12:41
高!
re: GCC4.3... 夢(mèng)在天涯 2008-03-14 11:42
GCC4.3中帶有c++ox嗎,那我也下個(gè)啊,vs的話要等到vs2008了
re: 賣(mài)書(shū) 夢(mèng)在天涯 2008-02-18 17:09
我也有一個(gè)C#primer 和C#設(shè)計(jì)模式,有誰(shuí)要的話也聯(lián)系我啊!我的2本都半價(jià)。
re: 賣(mài)書(shū) 夢(mèng)在天涯 2008-02-18 17:08
a ,超多啊!羨慕啊!
re: 暈啦,發(fā)生在我身邊的 夢(mèng)在天涯 2008-02-03 11:08
哈哈,
re: 好又多刷卡奇遇記 夢(mèng)在天涯 2008-02-03 11:05
那最后確定了嗎,真的是多刷了嗎,真可怕啊!
所以以后刷卡呀一定要在旁邊看著啊!
re: 打算做一個(gè)開(kāi)源的矢量繪圖軟件 夢(mèng)在天涯 2008-01-30 11:37
堅(jiān)持!
en ,不錯(cuò),很好的建議哦!
很有用啊!