J'ai besoin d'un peu d'aide ici: lors de l'utilisation de g ++ 4.1 pour construire mon code, il n'y avait pas d'erreur concernant "référence à la classe est ambiguë". Il ne se produit que lors de l'utilisation g ++ 4.5.2 pour compiler le même code, et voici le fragment de code:Référence à la classe est ambigu lors de la compilation avec g ++ 4.5.2
#include "tlm_utils/simple_initiator_socket.h"
using tlm_utils::simple_initiator_socket;
class HvEcu : public sc_module {
public:
......
simple_initiator_socket<HvEcu> initiator_socket;
//object instantiated here, also problem happend here....
......
};
Je suis vraiment pas sûr pourquoi cela se passerait-il que la syntaxe de l'espace de noms est valable pour vous. Il y a une correction pour se débarrasser de ce message, et c'est à la place de "using tlm_utils :: simple_initiator_socket;" il suffit de mettre "tlm_utils :: simple_initiator_socket initiator_socket;" dans le corps de classe montré ci-dessus. Cependant, je ne vois pas pourquoi le code ci-dessus ne fonctionne pas étant donné que le seul changement est la version du compilateur.
Votre code ne suffit pas pour savoir exactement quel est le problème, mais je suppose que vous avez une classe nommée simple_initiator_socket dans la portée principale, et que GCC est confus. –
@ MaëlNison: Cela n'échouerait-il pas pour les deux versions du compilateur? –
Peut-être que les 'anciennes' versions de GCC supposaient que l'instruction using signifiait que le développeur voulait explicitement utiliser le namespaced simple_initiator_socket? Je ne suis pas vraiment sûr, mais ça pourrait être une explication. –