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