Mientras que la función de <comparar()> es correcta, la de <ordenarVectorStrings()> no lo es. Tienes un lío bien montado ahí cuando la función es mucho más sencilla.
Además no necesitas devolver nada, puedes reordenar el array que pasas como parámetro simplemente.
Antes de nada si tienes errores hay que asegurarse de que el error no está en la entrada de datos. Por lo que te dejo aquí una forma de pedir las palabras y un algoritmo para ordenarlas. No te lo voy a dar hecho en C++ para no dártelo todo hecho, pero te servirá para guiarte:
// almacenar palabras
reservarFilas(palabras, cantidad_palabras)
para i := 0 hasta cantidad_palabras-1
nueva_palabra := pedirPalabra()
longitud := longitud(nueva_palabra)
reservarColumnas(palabras[i], longitud)
palabras[i] := nueva_palabra
fin para
// ordenar palabras
para i := 0 hasta cantidad_palabras-2
para j := i+1 hasta cantidad_palabras-1
si compararPalabras(palabras[i], palabras[j] > 0)
intercambiar(palabras[i], palabras[j])
fin si
fin para
fin para
Espero que te sirva y si tienes alguna duda más o problema no olvides dejar tú código para poder corregir esos errores.