La question ne se pose pas, ce n'est pas possible:
error: `this' may not be used in this context
"this" représente un pointeur sur ton instance de classe. Donc il est toujours du type duquel tu l'as instancié.
Par exemple: A* c = new B; Ici "c" (et donc le "this" dans c) est de type B, même s'il est "upcasté" en type A (c'est-à-dire masquer sous le type A).