したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

2530774さん:2010/07/26(月) 17:15:36
某所で見たが、元々何処で見たか分からないようなTips。
メンバ関数ポインタはアップキャスト可能。
-----

#include <iostream>
#include <windows.h>

class ITest{
public:
virtual double Function(unsigned int i) = 0;
};

class CDoubleTest : public ITest{
public:
virtual double Function(unsigned int i){
return static_cast<double>(i);
}
};

class CDouble2Test : public ITest{
virtual double Function(unsigned int i){
return static_cast<double>(i * 2);
}
};

int main(int argc, char **argv){
if(IsDebuggerPresent()){
DebugBreak();
}

CDoubleTest dt;
CDouble2Test dt2;
ITest *pt = &dt;
double (CDoubleTest::*pdf)(unsigned int) = &CDoubleTest::Function;
double (ITest::*pif)(unsigned int) = (double (ITest::*)(unsigned int))pdf;
std::cout << (dt.*pdf)(100) << std::endl;
std::cout << (dt.*pif)(100) << std::endl;
//std::cout << (pt->*pdf)(100) << std::endl; //暗黙の型変換は無理らしい
std::cout << (pt->*pif)(100) << std::endl;
std::cout << (dt2.*pif)(100) << std::endl; //元と型が違ってもいい
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板