c 11判斷某個類是否具有某個函式成員

2021-10-03 10:03:46 字數 816 閱讀 6909

//by 鳥哥 c++11判斷某個類是否含有某個成員函式和變數

#include

#include

#include

template

<

typename t>

struct has_member_f1;}

;template

<

typename t>

struct has_member_aa;}

;struct class1

;voidf1(

)};struct class2};

intmain()

else

if( has_member_f1

::value )

std::cout <<

"class2 包含 函式f1"

<< std::endl;

else

//2、判斷是否包含成員變數

if( has_member_aa

::value )

else

if( has_member_aa

::value )

std::cout <<

"class2 包含變數aa"

<< std::endl;

else

return0;

}

執行結果:

class1 包含 函式f1

class2 不包含 函式f1

class1 包含變數aa

class2 不包含變數aa

在C 中判斷某個類是否實現了某個介面

有時我們需要判斷某個類是否實現了某個介面 inte ce 比如在使用反射機制 reflection 來查詢特定型別的時候。簡單來說,可以使用type.isassignablefrom方法 1 2 typeof ifoo isassignablefrom bar.gettype typeof ifoo...

C 判斷某個類是否有某個成員函式,如果有則呼叫

有兩個sdk版本,a版本類base有setscalingmode函式,b版本類base無setscalingmode函式,為了同時相容兩個sdk版本,共用一套 常見的是通過巨集隔離,但版本眾多時管理起來會很麻煩,若可先判斷是否含有該函式,若有則呼叫,c 11新增特性解決了這一問題 偽 如果支援set...

javascript 判斷是否為某個資料型別

為何不用其他方法,因為下面的寫法考慮了各種相容性。判斷是否為陣列 isarray function source 判斷是否為日期物件 isdate function o tostring.call o object date o.tostring invalid date isnan o 判斷是否為...