Здравствуйте у меня есть геттер в матрица смежности классаполучить значение из другого класса C++
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.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 отображается нормальное значение. Вы можете мне помочь ?
UPDATE
я замечаю, что всегда будет 0, потому что я инициализируется значение в конструкторе .... Так как сделать что-то вроде этого
создать матрицу из файла и добавить значение vertexCount и т.д.
am.createFromFile("matrix.txt");
теперь я хочу, чтобы получить это значение (vertexCount и т.д.) из матрицы смежности класса Dijkstry класса и сделать
dijkstra.makeDijkstraAlgo();
dijkstra.viewDijkstra();
Как его решить?
Почему вы ожидаете' cout' напечатать что-то еще? 'vertexCount' инициализируется до 0 и' cout' печатает только это –
Можем ли мы получить больше кода? Убедитесь, что вы правильно инициализируете значения, потому что из вашего кода здесь '0' на самом деле будет ожидаемым результатом – meneldal
@LahiruChandima у вас есть право. Потому что я инициализирую нулевое значение в моем конструкторе, поэтому каждый вызов будет 0. Но как его разрезать? Просто удалите его? –