Ejemplo
En este ejemplo hay dos declaraciones de variable con el mismo nombre. Esto es engañoso y pueden confundir a los desarrolladores.

class ClassA {
public:
int someFunction() {
struct Hat {
int sameName;
};

Hat myHat;
myHat.sameName = 5;

int sameName = 5;

return sameName;
}
};

Solución
En lugar de esto, denomine las variables de forma diferente de modo que resulte evidente qué variable se está manipulando. Es recomendable que la variable tenga un nombre significativo.

class ClassA {
public:
int someFunction() {
struct Hat {
int sameName;
};

Hat myHat;
myHat.sameName = 5;

int banana = 5;

return banana;
}
};