2016-11-09 5 views
1

の写真の時間!同じスコープ内に同じ名前の変数と変数がある場合、そのクラスを指定する方法は?

struct my_struct { 
       ___________ class name (A) 
       ↓ 
    struct pineapple {}; 
    pineapple pineapple; 
       ↑______________ variable name (B) 

        ____________ seems to be referring to B instead of A 
        ↓ 
    my_struct(pineapple pineapple) { 
     this->pineapple = pineapple; 
    } 
}; 

したがって、同じ名前を共有するクラスと変数があります。これは通常、C++を気にしませんが、関数のパラメータ(そこのコンストラクタなど)の場合、クラスに対するローカル変数の名前を好むようです。

変数を指定するのではなく、クラスを指定する方法はありますか?

答えて

3

なぜあなたはそれをあなた自身にしますか?

とにかく、あなたは明確にするためにelaborated type specifierを使用することができます。

struct my_struct { 
    struct pineapple {}; 
    pineapple pineapple; 

    my_struct(struct pineapple pineapple) { 
       ^^^^^^ 
     this->pineapple = pineapple; 
    } 
}; 

demo

言われて、これは本当に奇妙なデザインで、私はそれを避けるだろうと。

+0

なぜ、すべてのメンバーがmy_structメンバーのサブグループなのですか?パイナップルはサードパーティーのUIクラスを継承して実装する必要があるため、ネストされた構造体にスティックする必要がありました。私はパイナップルのまともな同義語を見つけることができなかったので、私の他の選択肢は、名前の1つにアンダースコアや何かを追加することでした。しかし、私はそれがどのように見えたのが好きではありませんでした¯¥¥_(ツ)_ /¯ – user81993

+2

使用アナナス、してください。またはpineapple_t(または_v)。名前を付けるのは難しいですが、同じスコープ内で名前を再利用する必要はありません。P – krzaq

関連する問題