【问题标题】:calling a class method from another class从另一个类调用一个类方法
【发布时间】:2014-02-07 14:48:04
【问题描述】:

我想在 A 类的方法成员中更改 B 类的变量成员。 示例:

A.h:
class A
{
    //several other things
    void flagchange();
}
A.cpp:
void A::flagchange()
{
    if (human) Bobj.flag=1;
}

我知道我需要一个 B 类的对象,来改变 B 的一个变量成员,但是 B 的对象在 A 中是不可访问的。可以通过指针吗??

【问题讨论】:

    标签: c++ class communication


    【解决方案1】:

    但 B 的对象在 A 中不可访问

    如果 A 类无法访问 B 类的对象,则无法修改它们。重构设计后,应将其作为参数传递给函数:

    class A {
        //several other things
        void flagchange(B& obj) {
            if (human)
                obj.flag = 1;
        }
    };
    

    我希望能够为 B 的每个对象从 A 类的方法切换标志

    您应该在B 中将您的flag 公共变量声明为static

    class B {
    public:
        static int flag;
    };
    
    int B::flag = 0;
    

    然后,从内部A

    class A {
        //several other things
        void flagchange() {
            if (human)
                B::flag = 1;
        }
    };
    

    【讨论】:

    • 我不是反对者!!问题是我需要能够为 B 的所有 pbjects 做到这一点!所以这意味着我应该有指向所有 B 对象的指针??
    • “除非你自己注册”什么意思?
    • 在A类的方法中,有没有其他方法可以改变B类的变量???
    • 在 B.h B.h: class B { public: flag; 中声明的公共变量}
    • 每个对象.. B 类的每个对象都有这个标志变量的实例。我希望能够为 B 的每个对象从 A 类的方法切换标志
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多