Estoy tratando de escribir una biblioteca donde tengo algunas funciones de plantilla, algunas de las cuales son funciones auxiliares, así que no quiero que mis usuarios tengan acceso a ellas. Algunos códigos básicos pueden serOcultar la función de ayudante con plantilla: miembros estáticos o espacio de nombre sin nombre
//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);
}
}
¿Es posible ocultar de algún modo la función auxiliar para que los usuarios de la biblioteca no puedan llamarla directamente? Pensé que un espacio de nombres sin nombre podría hacer el trabajo, pero como estoy usando plantillas, no puedo dividir la declaración de la función y el cuerpo entre un encabezado y un archivo de implementación. Poner el espacio de nombre sin nombre en un archivo de encabezado no sirve de nada y tiene un estilo incorrecto. Lo único que puedo hacer es crear una clase mylib
y encapsular las funciones como funciones estáticas privadas/públicas.
Cualquier solución mejor sería muy apreciada.
Phil
que sugieren el cambio 'namespace' a 'class' y hacer todas las funciones' static', y luego poner su 'helper' en' private'. – neuront