gpt4 book ai didi

c++ - 从另一个类 C++ 获取值

转载 作者:行者123 更新时间:2023-11-28 06:17:32 25 4
gpt4 key购买 nike

你好,我在 adjacencyMatrix 类中有一个 getter

int AdjacencyMatrix::getVertexFirst() const {   return vertexFirst; }

和构造函数

AdjacencyMatrix::AdjacencyMatrix() {
this->vertexCount=0;
this->vertexFirst=0;
this->edgeCount=0;
this->matrix=0;
this->wage=0;

}

bool AdjacencyMatrix::createFromFile(string path) {
fstream file;
file.open(path.c_str(), fstream::in);
if (file.good())
{
int vertexF,vertexE,wag;
file >> this->edgeCount;
file >> this->vertexCount;
file >> this->vertexFirst;

matrix = new int *[vertexCount];
wage = new int *[vertexCount];

for (int i = 0; i < vertexCount; i++)
{
matrix[i]=new int[vertexCount];
wage[i]=new int[vertexCount];
}

//fill matrix by zeros
for (int i = 0; i < vertexCount; i++)
{

for(int j=0; j<vertexCount;j++)
{
matrix[i][j]=0;
wage[i][j]=0;

}

}

// fill matrix by 1

for(int i=0; i<edgeCount; i++)
{
file >> vertexF >> vertexE >> wag;
this->matrix[vertexF][vertexE]=1;
this->wage[vertexF][vertexE]=wag;

}
file.close();
return true;
}

return false;
}

当然打印在邻接类中工作现在我想在 Dijkstra 类中拥有这个值

//Dijkstra.cpp    
#include "Dijkstra.h"
AdjacencyMatrix am;

bool Dijkstra::makeDijkstraAlgo() {
int vertexCount=am.getVertexCount();
int vertexFirst=am.getVertexFirst();
int **wage=am.getWage();
cout << vertexCount;
cout << vertexFirst;
.......... }

这是我的主课

#include <iostream>
#include "Dijkstra.h"
#include "Screen.h"
using namespace std;

int main() {
AdjacencyMatrix am;
Dijkstra dijkstra;

am.createFromFile("matrix.txt");
dijkstra.makeDijkstraAlgo();
dijkstra.viewDijkstra();
return 0;
}

并且这个 cout 只显示 0,但在 AdjacencyMatrix 中显示正常值。你能帮助我吗 ?

更新

我注意到它总是为 0,因为我在构造函数中初始化了值....那么如何制作这样的东西

我从文件创建一个矩阵并将值添加到 vertexCount 等。

am.createFromFile("matrix.txt");

现在我想从邻接矩阵类获取这个值(vertexCount 等)到 Dijkstry 类并制作

dijkstra.makeDijkstraAlgo();
dijkstra.viewDijkstra();

我该如何解决?

最佳答案

您正在创建一个矩阵,但使用的是另一个矩阵。

makeDijkstraAlgo 使用名为“am”的全局矩阵,但 main 有自己的同名矩阵。

摆脱全局并将main的矩阵传递给函数

bool Dijkstra::makeDijkstraAlgo(const AdjacencyMatrix& am) {     
int vertexCount=am.getVertexCount();
int vertexFirst=am.getVertexFirst();
int **wage=am.getWage();
cout << vertexCount;
cout << vertexFirst;
// ...
}

int main() {
AdjacencyMatrix am;
Dijkstra dijkstra;

am.createFromFile("matrix.txt");
dijkstra.makeDijkstraAlgo(am);
dijkstra.viewDijkstra();
return 0;
}

关于c++ - 从另一个类 C++ 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com