Мне интересно, могу ли я определить некоторые функции в заголовочном файле, а затем использовать их в том же заголовочном файле, скрывая их от чего-либо еще?
Например, могу ли я сначала определить некоторые общие вспомогательные функции (специфичные для структур данных), а затем определить некоторые структуры данных в том же заголовке, которые используют эти функции?
например:
template<class T>
void Swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
Но я не хочу, чтобы Swap()
мешал другим функциям с таким же именем.
Я мог бы сделать это закрытым методом, но тогда мне пришлось бы предоставить каждому классу, использующему его, одну и ту же реализацию или сделать их классом друга ...