如果同一范围内有同名的类和变量,如何指定类?

时间:2016-11-09 22:43:58

标签: c++

图片时间!

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 ++,但在函数参数(例如那里的构造函数)的情况下,它似乎更喜欢本地变量的名称。

有没有办法指明我的意思是类而不是变量?

1 个答案:

答案 0 :(得分:3)

你为什么要这样做?

无论如何,您可以使用elaborated type specifier消除歧义:

struct my_struct {
    struct pineapple {};
    pineapple pineapple;

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

demo

话虽这么说,这是非常奇怪的设计,我会避免它。