0
考慮這種情況:我們編寫的代碼運行良好,直到我們包含一個頭文件,該頭文件碰巧有一個函數重載了我們原始函數之一。在這種情況下,可能會有一些地方調用函數進入重載版本以更好地匹配參數,這在邏輯上也是意想不到的。更糟的是,編譯器不會抱怨。在C++中包含頭文件時如何解決錯誤的重載
這裏是澄清我的問題演示:
/*
For simlicity, I write the codes in different files in this way;
Whether include header.h behaves differently
*/
// main.cpp
#include "header.h" // If included, sb will be overloaded
#include<iostream>
void sb(int){std::cout << "int" << endl;}
int main(){
sb(3.5);
return 0;
}
// header.h
void sb(double);
// hehe.cpp
void sb(double){cout << "double" << endl;}
我不知道這個問題是否頻繁或不發生,不知道是否有什麼辦法能解決或預防。
你聽說過的命名空間? – StoryTeller
使用正確的編程實踐(命名空間,類等) - 將所有函數放入同一個命名空間是一個災難處方 – UnholySheep
爲什麼不把這些函數放入不同的命名空間? –