Erreurs, bugs, questions - page 3095

 

Je veux clarifier, juste au cas où. Supposons qu'il y ait un code comme celui-ci :

ClassX *x=new ClassX;

//какой-то код

delete x;

//......много кода, прошло много времени

ClassY *y=new ClassY;

Print(x==y);            // может ли быть true?
Est-il possible, en principe, que x soit égal à y ?
 
mktr8591 #:

Je veux clarifier, juste au cas où. Supposons qu'il existe un tel code :

Est-il possible, en principe, que x soit égal à y ?

Théoriquement, oui. Auparavant, la désactivation du pointeur affichait un compteur (vous pouviez voir le nombre de tous les objets). Maintenant, c'est aléatoire.

 
fxsaber #:

Théoriquement, oui. Auparavant, l'impression du pointeur affichait un compteur (vous pouviez voir le nombre de tous les objets). Maintenant, c'est aléatoire.

Peut-être, mais c'est un peu petit pour le hasard - j'ai généralement sept chiffres.
 
mktr8591 # :

Il existe un script

Question : si GetPointer (obj) est passé correctement, pourquoi &obj échoue-t-il ?

On en a besoin pour quelque chose ?

Il n'y a pas besoin de GetPointer () ici.

   fTest(obj);                       //ОК

 // Это для чего-то нужно? 
   X *objptr;
   objptr = &obj;  
 
Alain Verleyen #:

Il n'est pas nécessaire d'utiliser un GetPointer () ici.

D'accord. Je me demande simplement pourquoi il y a une telle différence de comportement.
 
mktr8591 #:

Je veux clarifier, juste au cas où. Supposons qu'il existe un tel code :

Est-il possible, en principe, que x soit égal à y ?

Non, pas possible.

 
mktr8591 #:

Je veux clarifier, juste au cas où. Supposons que nous ayons le code suivant :

Est-il possible en principe que x soit égal à y ?


Je vous recommande de ne pas utiliser un pointeur autoranging vers une référence et de le faire explicitement, comme indiqué dans le code ci-dessous (surligné en rouge) :

class A
  {
  };

void func(A &)
  {
  }

void OnStart(void)
  {
   A a;   
   A *pa=&a;

   func(* pa);
  }
 
Ilyas # :


Je vous recommande de ne pas autoriser le pointeur à devenir un lien et de le faire explicitement comme indiqué dans le code ci-dessous (surligné en rouge) :

Qu'est-ce qui a changé ? N'est-ce pas la même chose après tout ?
 

Il n'y a aucun doute sur l'erreur, mais elle est antidatée pour une raison quelconque.

class X {};

template <typename T>
void fTest(T &Obj) {return;}

void OnStart()
  {
   X obj;
   fTest(GetPointer(obj));                      //'GetPointer' - parameter passed as reference, variable expected - ДВАЖДЫ!
  }
 
Ilyas #:


Je vous recommande de ne pas utiliser un pointeur autorégulé vers un lien et de le faire explicitement, comme indiqué dans le code ci-dessous (surligné en rouge) :

Merci !

func(*(&a)) travaille ))