从另一个 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;
}