如何在另一个类的方法中使用一个类的实例?
我定义了两个类A和B。 他们是完全独立的。
现在我创建c
作为class B
实例,并将d
作为class A
实例。 现在我想定义将在c
:上执行操作的functionOfA
的主体。
class A {
public:
functionOfA();
}
class B {
...
}
A::functionOFA()
{
c.functionOfB();
}
main()
{
A d;
B c;
d.functionOfA();
}
但是编译器给了我下面的错误: c没有在这个范围内声明
A::functionOfA()
定义需要知道什么是c
实例,你可以传入B
实例:
class B;
class A
{
public:
functionOfA(const B& b) const;
};
A::functionOFA(const B& b) const
{
b.functionOfB();
}
A a;
B b;
a.functionOfA(b); // pass in B instance
在这个代码中(你的main
):
{
A a;
B b;
a.functionOfA();
}
b
是只能在此范围内使用的局部变量。 b
表示具有自动存储持续时间的对象,直到执行超出范围时才存在(在此情况下:存在于main
)。
当你调用方法functionOfA
,虽然对象b
仍然“活着”,但是functionOfA
没有访问这个对象的方法〜>这个方法需要引用这个对象(或其副本)来使用它:
class A {
public:
void functionOfA(B& b) {
/* b is now accessible here, this method can also change the object b */
}
这样调用:
A a;
B b;
a.functionOfA(b);
我建议你也看看这些问题:
如何将对象传递给C ++中的函数?
在C ++中传递值或传递常量引用会更好吗?
在C ++中通过引用传递指针会带来什么好处?
一些好书也可能对此非常有帮助:
最终的C ++图书指南和列表
A::functionOFA()
{
c.functionOfB(); //You cannot do this unless c is global
}
但在你的情况下,它的main
使用:
B c;
void A::functionOfA()
{
c.functionOfB();
}
要么
传递B的Object作为参数functionOfA(const B& c)
上一篇: How to use instance of one class in a method of another class?
下一篇: How *val and &val differ when passed by reference in C++