如何在另一个类的方法中使用一个类的实例?
我定义了两个类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++
