如何在另一个类的方法中使用一个类的实例?

我定义了两个类AB。 他们是完全独立的。

现在我创建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)

链接地址: http://www.djcxy.com/p/20739.html

上一篇: How to use instance of one class in a method of another class?

下一篇: How *val and &val differ when passed by reference in C++