C++ Qt 在A类使用B类的变量

不同类之间相互使用

class2类中使用class1类的信息——class2与class1建立联系——PSO类中使用Result类的信息

a、PSO类中添加Result类的头文件以及成员变量(私有或者共有)
b、指针形式 分配空间(如果是指针形式,需要分配空间)

.h

#include "vector_test.h"

public:
   Vector_test *vector_test;//以指针的形式作为成员变量

.cpp

void MainWindow::on_pushButton_clicked()
{
    
    
    vector_test = new Vector_test();//以指针的形式,就需在cpp使用的时候手动分配空间

}

example

class1中定义一个全局变量a[20]并赋值,在class2中使用数组a。

main.h

#include<stdio.h>
#include<iostream>
#include <string>
#include<math.h>
#include "class1.h"
#include "class2.h"
using namespace std;
 
int main()
{
    
    
	//函数从main文件开始顺序执行
	class1 a1;
	class2 a2;
	
	system("pause");//页面不会消失
	return 0; 
}

class1.h文件:

#include <stdio.h>
#include <iostream>

using namespace std;

extern int a[20];//extern关键字,再次声明这个全局变量

class class1
{
    
    
public:
	
	class1();
	~class1();

	//以下为尝试初始化一个static成员变量
	
 	//static  int c = 1;//报错:成员变量如果初始化,就必须为常量

	//static  const int c = 1;//可以声明,但是必须添加添加const,就无法更改,与cpp函数的功能不符合
	
	static int c;//完成声明和定义,初始化放在了cpp函数中(方法唯一,推荐)
 
};

class1.cpp文件:

#include "class1.h"
 
int a[20];//全局变量
 
int class1::c = 1;//类中静态变量的初始化
//不太好界定成员变量是否是全局变量或者是局部变量
//全局变量——作用域在所有的cpp
//局部变量——一般是定义在函数的内部

//::起到说明作用,告诉编译器是clear1中的c
 
class1::class1()
{
    
    
	c = 2;
	
	cout << "class1中数组a的值:";
	for (int i = 0; i < 20; i++) {
    
    
		a[i] = i + 1;
		cout << " " << a[i];
	}
	cout << "\n";
}
 
class1::~class1()//析构函数,释放构造函数占用的内存
{
    
    
}

class2.h文件:

#pragma once//仅仅在VS中保证了不会有问题,解决“头文件重定义问题”
#include "class1.h"
 
class class2
{
    
    
public:
	class2();
	~class2();
private:

	//自定义的类相当于int类型; int a; int b;都是可以的,因此以下不会报错
	//因为是以类的形式(不是指针,不用分配空间),程序从main文件执行至此处,会运行两次(c1、c2)的class1,因此结果有1+2个数组 
	class1 c1;//类 对象
	class1 c2;
};

class2.cpp文件:

#include "class2.h"
 
class2::class2()
{
    
    
	//cl(class1)作为class2类的成员变量,c作为class类的静态成员变量
	cout << "c1.c的值为:" << c1.c << "     c2.c的值为:" <<c2.c<< endl;
	c1.c = 5; //全局变量的值,可以被改变
	cout << "c1.c的值为:" << c1.c << "     c2.c的值为:"<< c2.c << endl;
	cout << "class2中数组a的值:";
	for (int i = 0; i < 20; i++) {
    
    
		cout << " " << a[i];
	}
	cout << endl;
}
 
class2::~class2()
{
    
    
}

结果

class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
c1.c的值为:2     c2.c的值为:2
c1.c的值为:5     c2.c的值为:5
class2中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/qq_43641765/article/details/112889479