Ошибка при инициализации вектора NTL в классе - PullRequest
0 голосов
/ 18 марта 2020

В своем коде я использовал много векторов и матриц NTL в качестве членов класса. Большинство переменных могут инициализироваться как вектор нулевой длины или матрица. Но последний (randE), он как-то по умолчанию установлен на вектор с размером = 4444736032 и исправлен.

class MyClass
{
public:
  shared_ptr<OtherClass> ptr;

  Mat<ZZ_p> A;
  Mat<ZZ_p> B;
  Mat<ZZ_p> C;
  Vec<ZZ_p> D;    
  Vec<ZZ_p> randA;
  Vec<ZZ_p> randB;
  Vec<ZZ_p> randC;
  ZZ_p randD;    
  Mat<ZZ_p> E;
  Vec<ZZ_p> randE;

  MyClass(
      const shared_ptr<OtherClass> &ptr;
      const Mat<ZZ_p> &A,
      const Mat<ZZ_p> &B,
      const Mat<ZZ_p> &C)
  {
    this->ptr = ptr;
    this->A = A;
    this->B = B;
    this->C = C;
  }
}

Я попытался добавить инициализацию внутри конструктора, он выдаст ошибку, из-за вектор фиксирован, он не может изменить свою длину.

// Error: SetLength: can't change this vector's length
this->randE = Vec<ZZ_p>();
...