从另一个 class C++ 获取价值
get value from another class c++
你好,我在 adjacencyMatrix class
中有一个 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;
}
当然打印在 Adjacency 中有效 class
现在我想在 Dijkstra class
中得到这个值
//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;
.......... }
这是我的主要class
#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");
现在我想从邻接矩阵 class 得到这个值(vertexCount 等)到 Dijkstry class 并使
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;
}
你好,我在 adjacencyMatrix class
中有一个 getterint 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;
}
当然打印在 Adjacency 中有效 class 现在我想在 Dijkstra class
中得到这个值//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;
.......... }
这是我的主要class
#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");
现在我想从邻接矩阵 class 得到这个值(vertexCount 等)到 Dijkstry class 并使
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;
}