Poți să nu folosești main, desigur, ideea e că tot trebuie să ai ceva asemănător, fără nu se poate. Cum zice și eroare pe care ai amintit-o, nu trebuie neapărat
main, ci un
entry point. Erau niște "probleme" (în glumă, oarecum) care te puneau să faci un program fără main, dar erau mai mult niște bancuri seci, ca și cel care punea să printezi ceva fără ; (punct și virgulă), workaround-ul fiind ceva de genul
if(printf("ceva")){}.
În concluzie fără entry point nu merge. Dacă găsește cineva vreo soluție, să mă anunte și pe mine.
Cât despre constructori, eu zic că e destul de normal să se execute de sus în jos și că e destul de standard, altfel nu prea ar avea logică. Totuși, nu cred că e o idee să lași ambiguitate, mă refer aici la variabilele inițializate global, în special dacă nu ești singurul care o să lucreze cu acele clase. Și chiar dacă nu ar fi problema da mai mulți, probabil ai vrea să apelezi un constructor fără să schimbi variabila globală, etc, motive sunt.
Dacă și la asta se găsește excepție, pe asta chiar vreau să o știu.
O zi bună.