Estoy tratando de portar una biblioteca antigua (que no usa espacios de nombres por lo que puedo ver) a los compiladores modernos. Uno de mis objetivos no puede distinguir entre System :: TObject y :: TObject (sin un espacio de nombres). System :: TObject es nativo del compilador.¿Cómo manejar un conflicto de nombre de clase al portar código antiguo?
He intentado utilizar una directiva, es decir, utilizando :: TObject;
Pero eso no lo hace.
La solución obvia es envolver toda la biblioteca original en un espacio de nombres y luego llamarla por nombre, lo que debería evitar la ambigüedad. ¿Pero es esa la solución más sabia? hay alguna otra solucion? Agregar un espacio de nombres requeriría cambiar un montón de archivos y no sé si tendría repercusiones no deseadas más adelante.
Esto hará que el compilador cree símbolos con el prefijo oldlib, que no estará presente en la biblioteca anterior, lo que dará como resultado el símbolo 'símbolo externo no resuelto': __thiscall oldlib :: A :: void ("void)" (? ? 1A @ oldlib @@ QAE @ XZ) ' – xtofl