Я создал метод доступа в своем классе SparseMatrix. Я пытаюсь написать функцию-член symmetric
, и я хотел бы получить доступ, используя свой метод доступа к частным данным класса в моей симметричной функции.
У меня есть функция транспонирования, и this->transpose()
работает так, как я думал. Поэтому я попробовал this->[]
и, конечно, это не работает. Возможно, потому что это перегрузка оператора.
bool SparseMatrix::symmetric() const
{
SparseMatrix A_T(m_m,m_n);
A_T = this->transpose();
bool is_symmetric;
for (int row=0; row<m_m; ++row)
{
int cols = A_T.m_colIndex[row].size();
for (int col=0; col<cols; ++col)
{
array<int, 2> A_tuple = {row,m_colIndex[row][col]};
array<int, 2> A_T_tuple = {row,A_T.m_colIndex[row][col]};
if (A_T[A_T_tuple] == this->operator[](A_tuple))
{
is_symmetric = true;
}
...
Добавлен еще один код для ясности.
Вот сообщение об ошибке.
Undefined symbols for architecture x86_64:
"SparseMatrix::operator[](std::__1::array<int, 2ul>&) const", referenced from:
SparseMatrix::symmetric() const in SparseMatrix.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)