C++中extern用于类

本文介绍了一种在不同类间共享变量的方法,通过在多个类中使用extern关键字声明全局变量来实现实时更新。示例代码展示了如何在B类设置属性的同时更新A类的相应属性。

由于需要今天需要实现一个在B类设置某个属性的时候也需要及时将A类的某个属性设置,在C类设置某个属性的时候也需要及时将A类的某个属性设置,...

那么想到了用extern实现:

aa.h

#ifndef AA_H_INCLUDED
#define AA_H_INCLUDED

class A
{
public:
    A();
    ~A();
    void setA(int _a);
    void setB(int _b);
    int getA();
    int getB();
private:
    int a;
    int b;
};

#endif // AA_H_INCLUDED

aa.cpp

#include "aa.h"
#include <iostream>

A::A(){}

A::~A(){}

A aa;

void A::setA(int _a){
    //std::cout << "barararar" << std::endl;
    a = _a;
}

void A::setB(int _b){
}

int A::getA(){
    return a;
}

int A::getB(){
    return b;
}

bb.h


#ifndef BB_H_INCLUDED
#define BB_H_INCLUDED

#include "aa.h"


class B
{
public:
    B();
    ~B();
    int getA();
    void setA(int a1);
private:
    int a;
};


#endif // BB_H_INCLUDED
bb.cpp

#include "bb.h"

#include <iostream>
B::B() {}

B::~B() {}

extern A aa;
void B::setA(int a1)
{
    a = a1;
    //std::cout << "foodfodof" << std::endl;
    aa.setA(a1);//fuck
}

int  B::getA()
{
    return a;
}

main.cpp

#include <iostream>
#include "bb.h"



using  namespace std;
extern A aa;

int  main()
{
    B b;
    b.setA(3);
    cout<<aa.getA()<<endl;
    return 0;
}

运行结果为3。

总结:

1:多个文件中要用到一个变量时,非extern莫属。

2:类中函数的命名传入的参数名需要与类中的属性不一致。如A中有int a,那么setA(int a)是不行的。

3:上面的extern A aa需要声明在aa.cpp中,要不然有可能出现多次定义的错误。


最后感谢大神的指导。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值