Próbuję napisać bibliotekę, w której mam pewne szablony funkcji, z których niektóre są funkcjami pomocniczymi, więc nie chcę, aby moi użytkownicy mieli do nich dostęp. Podstawowym kodem może byćUkrywanie szablonowej funkcji helpera - statyczne elementy lub nienazwana przestrzeń nazw
//mylib.h
namespace myfuncs
{
template<class T>
void helper (T input, int extrainformation)
{
//do some usefull things
}
template<class T>
void dostuff(T input)
{
int someinfo=4;
helper(input, someinfo);
}
}
Czy jest możliwe, aby jakoś ukryć funkcję pomocnika, aby użytkownicy biblioteki nie mogli jej wywołać bezpośrednio? Myślałem, że nienazwana przestrzeń nazw może wykonać to zadanie, ale ponieważ używam szablonów, nie mogę podzielić deklaracji funkcji i treści między nagłówek i plik implementacji. Umieszczenie nienazwanego obszaru nazw w pliku nagłówkowym jest bezużyteczne i ma zły styl. Jedyne, co mogę zrobić, to stworzyć klasę mylib
i hermetyzować funkcje jako prywatne/publiczne funkcje statyczne.
Wszelkie lepsze rozwiązania byłyby mile widziane.
Phil
proponuję zmianę 'namespace' do 'class' i ustaw wszystkie funkcje' static', a następnie umieść 'helper' w' private'. – neuront