1. ホーム
  2. c++

[解決済み] を' :: 'に置き換えると、' . はC++で曖昧さを生み出しますか?

2023-02-02 03:22:42

質問

C++では、演算子 :: は、名前空間またはクラス内のクラス、関数、変数にアクセスするために使用されます。

もし言語仕様が . の代わりに :: を使用すると、オブジェクトのインスタンス変数やメソッドにアクセスするときなど、曖昧さが生じる可能性がありますが、そのような場合にも :: ?

C++が型名でもある変数名を許さないことを考えると、それが起こりうるケースは思いつきません。

明確化します。私は、なぜ :: が選ばれたのか、そして . が選ばれましたが、これもうまくいったのでしょうか?

どのように解決するのですか?

C++ を既存の C コード (オブジェクト名と構造体タグの間の名前の衝突を許可する) とほぼ互換にしようとしたため、C++ ではクラス名とオブジェクト名の間の名前の衝突を許可しています。

ということは

struct data {
    static int member;
};

struct data2 {
    int member;
};

void f(data2& data) {
    data.member = data::member;
}

は正規のコードです。