Так что я столкнулся с проблемой, когда у меня есть функция с несколькими параметрами. Из удобства я начал перегружать его так, что для instace я могу передать std::string
вместо экземпляра std::fstream
. В этой перегрузке из этой строки будет построен новый std::fsteam
, а затем вызывается другая функция. Пример:Функция с несколькими типами для одного и того же параметра
void func(const std::string & filename) {
std::fstream file(filename);
func(file)
}
void func(std::fstream & file) {
// ...
}
Это все работает нормально. Но когда вы начинаете делать это для более чем одного параметра или более двух возможных типов, все начинает становиться беспорядком, и вам, возможно, придется написать много перегрузок с дублирующимся кодом и т. Д.
Так что мне было интересно, было ли более элегантное решение для эта проблема для столько параметров, сколько вам нужно.
Я знаю, что эта проблема не специфична для C++, но меня интересуют решения проблемы на C++.
Вы слышали о шаблонах? – NathanOliver
Да. Однако я не уверен, как я могу использовать их в этом конкретном случае. – BrainStone
Вы можете специализировать шаблоны, и вы также можете указать условия для определенных типов с [характерными чертами] (http://en.cppreference.com/w/cpp/header/type_traits). – wally