2011-05-11 89 views
1

我希望的一個快速問題。我想知道爲什麼在下面註釋的行放在全局級時會導致錯誤,而當它放置在主函數內時它可以正常工作?定義和分配指針在全局和局部範圍的功能

非常感謝

#include <iostream> 
using namespace std; 
bool compare(const int &v1, const int &v2) { 
    if (v1 < v2) { 
     return true; 
    } else { 
     return false; 
    } 
} 


bool (*pf5)(const int &v1, const int &v2); 
//pf5 = compare; 


int main() { 
    int v1 = 5; 
    int v2 = 6; 
    pf5 = compare; 

    bool YesNo1 = compare(v1, v2); 
    cout << YesNo1 << endl; 
    bool YesNo3 =pf5(v1, v2); 
    cout << YesNo3 << endl; 

    return 1; 
} 
+0

通常在發佈關於它們時包含編譯器錯誤是一個好主意。他們*通常*告訴你什麼問題是... – forsvarir 2011-05-11 10:03:11

回答

4

你不能只是在函數內部進行分配。但是,您可以執行初始化:

bool (*pf5)(const int &v1, const int &v2) = compare; 
+0

有趣 - 這是我不知道的東西。從我的測試中可以看出,你提到的規則適用於所有類型,而不是僅適用於functiosn的指針。 \t非常感謝您的回覆。這比我希望的更有幫助。 #include \t using namespace std; \t int paolo; \t paolo = 5; int main(){ \t cout << paolo << endl; \t \t \t \t \t return 1; } – RandomCPlusPlus 2011-05-11 10:01:35

+0

@Random是的。除了定義和初始化之外,你不能在任何你喜歡的地方編寫任何舊的C++代碼,它必須全部進入函數內部。 – 2011-05-11 10:05:48

+0

找到了你。我相信,知道這將避免未來的許多麻煩。再次感謝。 – RandomCPlusPlus 2011-05-11 10:07:30