Même si je me serais aussi attendu a la même chose que Pen^2, mais bon ^^
Je pense que ça à voir avec la modularité du langage. Puisque tu peux séparer prototype et implémentation (...) le compilateur ne peut a priori pas simplement faire le lien entre le code de ta fonction et le prototype de ton class/struct. ça ne pose pas nécéssairement de problème dans le cas d'allocation dynamique via new (en fait ça dépendrait de l'implémentation du compilo

), mais pour la création d'objets statiques le compilo ne peut pas déterminer a l'avance la taille à allouer.
Après si tu n'as pas accès au contexte objet il ne reste que le contexte global qui est bien supporté (on dit merci la compilation séparée...)