サンプル
このサンプルには、同じ名前の変数宣言が 2 つあります。これは紛らわしく、開発者を混乱させる可能性があります。

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

Hat myHat;
myHat.sameName = 5;

int sameName = 5;

return sameName;
}
};

ソリューション
代わりに、変数に別の名前を付け、どの変数を操作しているのかが明らかになるようにします。変数には意味のある名前を付けることをお勧めします。

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

Hat myHat;
myHat.sameName = 5;

int banana = 5;

return banana;
}
};