1樓:劉春雷
我覺得可以這樣子,對於引數不同的函式:
方法1:
假如有2個函式fun1, fun2 這兩個函式的引數不同,可以利用多型將這兩個函式變成相同的格式
std::string fun1(std::string str1);
std::string fun2(std::string str1,std::string str2);
可以利用多型,函式引數都變成基類的指標
std::string fun1(CBasePara* para);
std::string fun2(CBasePara* para)
在函式fun2中,將父類指標轉換為子類指標,這樣fun2 就可以呼叫str1和str2了
#include
#include
#include
class CBasePara
};class CPara1:public CBasePara ;
std::string fun1(CBasePara* base)
std::string fun2(CBasePara* para)
using pfunc1=std::function;
using pfunc2=std::function;
int main()
方法二:
將所有的引數抽出到乙個並集到Struct中
struct Paras ;
那麼函式fun1和fun2就可以變為
std::string fun1(Paras* para);
std::string fun2(Paras* para);
2樓:
可以造乙個vector of void ptr 或者 vector of abstract class (polymorphism)或者用c++自帶的 union
3樓:Milo Yip
如果引數數目和型別相同,而不同型別是指自由函式、成員函式、lambda等,那麼可以用 std::function。
如果都不一樣,那麼應該可用 C++17 的 std::variant 或 std::any 去儲存不同引數型別的 std::function。
C 容器怎麼存放不同型別的值?
型別擦除 template Ret,typename Args class Drived public Base virtual Drived virtual void Fun final Ret func Args class Base virtual Base virtual void Fun ...
C 中如何判斷乙個變數的型別是否為指標?
我覺得題主應該是之前學過某種動態型別的語言 比如python js 想要學C C 於是才會有這個疑問吧?C或者C 屬於靜態型別語言,你一般不會遇到這個問題,至少目前應該是不會,因為乙個變數在傳遞過程中你必須要明確他的型別,那你怎麼可能不知道它是不是指標?比如說你在題目中說的 fun A 在C和C 中...
C語言中指標的型別在彙編中是如何表示的?
組合語言。組合語言一般確實沒有指標或位址這樣的資料型別,但是基本都會有一些基本的資料型別來容納指標或位址的值。具體到80x86彙編,就可以通過偽指令按位元組 字 雙字 四字甚至來定義資料項,這些資料項就可以用來容納指標或位址的值。不過,這些指標或位址的值在匯程式設計序中往往無法直接使用,需要將這些值...