-1
我寫了下面一段鍵盤上的代碼,但我不知道如何/爲什麼它應該編譯。問題在C++中使用的typedef
#include<iostream>
using namespace std;
typedef double dObject;
typedef int iObject;
typedef void (*swapfuncptr)(dObject, dObject);
void swap(dObject a,dObject b) {
cout << a << " " << b << endl;
dObject tmp;
tmp = a;
a = b;
b = tmp;
cout << a << " " << b << endl;
}
int main() {
double a = 7.5, b = 5.3;
swapfuncptr swapptr1;
swapptr1 = &swap;
swapptr1(a, b);
int c = 3, d = 2;
swapfuncptr swapptr2;
swapptr2 = &swap;
swapptr2(c, d);
swapfuncptr swapptr3;
swapptr3 = &swap;
swapptr3('r', 'd');
return 0;
}
所以dobject只適用於具有整數參數的函數的雙打也可以。我不明白這是如何工作的。
能有人請解釋。
感謝 小號
如果這不只是測試代碼,我想你應該重構它使用模板函數,而不是類型定義 – 2011-06-07 15:02:24