Передача значения переменной класса в структуру в этом же классе С++

115
01 сентября 2021, 06:40

Помогите, пожалуйста, решить проблему. Не знаю, как записать и в сети найти не получается. В main инициализирован объект класса DijkstraAlgorythm, в самом классе есть поле int isOriented, которому присваивается значение:

int main() {
DijkstraAlgorythm object;
object.isOriented = 1; 

В самом классе:

class DijkstraAlgorythm {
public:
int isOriented;
struct Graph
{
    vector<vector<int>> matrix;
    Graph(int size)
    {
        matrix.resize(size);
        for (int i = 0; i < size; i++)
            matrix[i].resize(size, infinity);
    }
    void set_edge(int id1, int id2, int cost)
    {
        matrix[id1][id2] = cost;
        if (isOriented == 0)
        matrix[id2][id1] = cost;
    }
};

Идея такая: если isOriented = 0, то граф неориентированный и стоимость прохода до вершин устанавливается туда-обратно одинаковая, если ориентированный - только в одну сторону. Как в структуру Graph вытащить значение переменной isOriented? Заранее большое спасибо.

Answer 1

Дело в том, что int isOriented является членом другого класса. Хотя и Graph является вложенной структурой, но она не может использовать член, принадлежащий обьекту другого типа. Вам нужно хранить в Graph указатель(ссыльку) на обьект DijkstraAlgorythm, и через него использовать его член isOriented или сделать(что логичнее) isOriented статическим. И как замечание: будет понятнее и уместнее, если он будет булевским обьектом, а не целочисленного типа, и не вижу смысла вложенной структуры, доступной всем. Теряется смысль вложенности

READ ALSO
Тонкости работы с функцией strdup

Тонкости работы с функцией strdup

Создаст ли strdup() '\0' в конце динамического массива?

78
Выброс и перехват исключения [закрыт]

Выброс и перехват исключения [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

112
Анимация при скролле. Как создавать такие анимации?

Анимация при скролле. Как создавать такие анимации?

Мучает вопрос с анимацией(примеры ниже), никак не могу найти в интернете, может неправильно ищуМне никак не понятно каким образом всё это...

189