gpt4 book ai didi

c++ - 类成员是另一个类的实例

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:04 24 4
gpt4 key购买 nike

我想让一个类成员成为另一个类的实例。但是我收到警告“警告 C4458:'x' 的声明隐藏了类成员”并且代码不起作用。

class Ca {
int va = 5;
public:
Ca();
int getVa(void);
};

int Ca::getVa(void) {
return va;
};


class Cb {
Ca x;
public:
Cb();
int getCa(void);
};

Cb::Cb(void) {
Ca x; // instanciate Ca
}

int Cb::getCa(void) {
return x.getVa();
}

int main()
{
Cb cb; // instanciate Cb
int i = cb.getCa();
cout << "va = " << i << endl;
}

我不明白警告,请有人解释一下吗?

最佳答案

警告在这一行:

Cb::Cb(void) {
Ca x; // <<== Here
}

问题是Ca x是一个与成员变量x无关的局部变量。

如果您只需要调用默认构造函数来初始化x,则您无需执行任何操作:C++ 会自动为您完成。如果您想将一些参数传递给 Ca 的构造函数,请使用初始化列表:

Cb::Cb(int argForAsConstructor) : x(argForAsConstructor) {
// Empty body
}

冒号后的构造允许您初始化没有默认构造函数的成员变量。

关于c++ - 类成员是另一个类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40158111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com