我只是打角落找尋與C.這是某種形式的「階級」我做:如何避免C中的「self」參數?
typedef struct test{
int x;
int y;
int(*mul)(test *);
} mult;
int testMul(test *t){
return t->x * t->y;
}
mult newTest(int x_in, int y_in){
mult tmp;
tmp.x = x_in;
tmp.y = y_in;
tmp.mul = &testMul;
return tmp;
}
如果我想使用mul()
「方法」,我不喜歡這樣寫道:
mult a = newTest(2,6);
a.mul(&a); //12
有沒有一些巧妙的方法來避免&a
參數,同時仍然可以訪問mul()
函數中的struct-Params?
您可能會製作一個宏來幫助您。 – 2014-08-31 20:30:25
不,在您的代碼中,您應該*做任何事情都無法做到這一點。另外,如果您不希望函數被替換/定製,您應該簡單地將它作爲一個外部函數,它將您的類型作爲參數,而不是嘗試複製OOP語言的語法(或僅使用C++)。在C中,通常的做法是編寫test_multiply(&a)而不是a.multiply(),其中「test」是「類」的名稱。 – 2014-08-31 20:35:54
'int testMul(test * t){'typedeffed的名字是'mult',而不是'test'。 (你是否在使用C++編譯器?) – wildplasser 2014-08-31 20:38:21