He cambiado las definiciones de los objetos L2cap desde principal. Ahora lo realizo:
L2cap* micapa = new L2cap(1);
Por ejemplo. Y para referirme ahora a los métodos de mi clase, usaré -> en lugar de '.' solo.
Sin embargo el resultado de la ejecución sigue siendo el mismo.
No he entendido bien la última parte de tu último post, Eternal Idol.
Otra cosa que queria comentar es la siguiente. Ejecutando paso por paso, en depuración, observo que el comportamiento, tanto en el servidor como en el cliente es similar en cuanto a lo siguiente: en el constructor, se realizan todas las acciones correspondientes, pero cuando se llega a beginthreadex, da un salto a SocketServer (la primera línea del constructor de la clase) y de ahí pasa a la destrucción del objeto de la clase.
Eso ocurre tanto si elegimos que sea Cliente como si es Servidor. Y ocurre tanto con la definición realizada con new, como con la que tenía antes.
¿Es normal esto?
Ademas, si pongo entre comentarios la línea del beginthreadex (para comprobar si era debido a dicha instrucción), ocurre exactamente lo mismo, solo que el salto se realiza desde la línea anterior. Y si comento la anterior, se realiza desde la anterior (que es un simple cout ), ... No tiene ningún sentido.