работа с классами c++

345
22 июня 2018, 19:10

у меня есть два класса TMatrix(класс для работы с матрицами) и TVector(для работы с векторами) в классе TMatrix у меня реализован метод умножения матрицы на вектор, но мне надо еще реализовать метод умножения вектора на матрицу, его я пытаюсь реализовать в классе TVector. в чем собственно проблема: в классе TMatrix у меня подключен класс вектора

#include"TVector.h"

но в классе TVector я не могу подключить TMatrix таким же способом, потому что зациклятся вызовы, вектор вызывает матрицу, а матрица вектор. я подключал в векторе матрицу через friend class TMatrix, но метод все равно не понимает что такое TMatrix

 TVector operator *(TMatrix& T)
{
    TVector Res;
    for (int j = 0; j < N; j++)
    {
        for (int i = 0; i < N; i++)
        {
            Res.Vector[j] += Vector[j] * T.GetMatrix(i, j);
        }
    }
    return Res;
}

программа говорит, что не знает что стоит слева от метода .GetMatrix(i, j), не может определить

double GetMatrix(int i, int j)
{
    if (i < 0 || i >= Ny)
    {
        throw "ERROR";
    }
    if (j < 0 || j >= Unit_Count)
    {
        throw "ERROR";
    }
    return matrix[i][j];
}

вот реализация метода GetMatrix. При попытке собрать выдается ошибка, об использовании неопределенного типа TMatrix как решить эту проблему?

на первой картинке в классе TVector объявляю класс TMatrix

на второй картинке представлена реализация метода перемножения вектора на матрицу все в том же классе TVector, ругается на то, что подчеркнуто

подключение класса TVector в классе TMatrix

просто так отключить вектор от матрицы не могу, так как есть достаточное количество методов, которые используют тип TVector, один из них на картинке

Answer 1

Предшествующее неполное объявление типа (forward declaration) и указатели/ссылки.

Например:

B.h

class A;
class B {
    A *_a;
};

A.h

class B;
class A {
    B *_b;
};
READ ALSO
C++ tinyxml: TiXmlDocument::LoadFile(&ldquo;MyXML.xml&rdquo;) возвращает false

C++ tinyxml: TiXmlDocument::LoadFile(“MyXML.xml”) возвращает false

Не получается загрузить MyXMLxml файл, расположенный в той же директории, что и исполняемый файл приложения

176
Работа с файлами С++ (WinAPI)

Работа с файлами С++ (WinAPI)

Программа должна открывать для чтения и записи "txt" файл, в котором хранятся модели и цены ноутбуков, и при необходимости вызывать окно добавления...

351
Нахождение одного из чисел, если дан НОК двух чисел и второе число

Нахождение одного из чисел, если дан НОК двух чисел и второе число

Не могу понять, как эту задачу можно решить без "тупого" перебора чисел от НОК/данное число, до самого НОКЧисло, которое нужно найти, должно...

225
Как добавить объект в map?

Как добавить объект в map?

Правильно ли я добавляю пару значений в map?

243