图片时间!
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 ++,但在函数参数(例如那里的构造函数)的情况下,它似乎更喜欢本地变量的名称。
有没有办法指明我的意思是类而不是变量?
答案 0 :(得分:3)
你为什么要这样做?
无论如何,您可以使用elaborated type specifier消除歧义:
struct my_struct {
struct pineapple {};
pineapple pineapple;
my_struct(struct pineapple pineapple) {
^^^^^^
this->pineapple = pineapple;
}
};
话虽这么说,这是非常奇怪的设计,我会避免它。