У меня возникли проблемы с инициализацией элемента static const struct. Я использую полиномы NTL по модулю р (ZZ_pX.h) библиотека и мне нужно для следующей структуры:Объект Static Const
struct poly_mat {
ZZ_pX a,b,c,d;
void l_mult(const poly_mat& input); // multiplies by input on the left
void r_mult(const poly_mat& input); // multiplies by input on the right
static const poly_mat IDENTITY; // THIS IS THE PART I AM HAVING TROUBLE WITH
}
Так poly_mat является 2х2 матрицей многочленов. У меня есть операции умножения, и в функциях, которые я пишу, мне часто приходится возвращать единичную матрицу a = 1, b = 0, c = 0, d = 1. Я не могу заставить статическую константу poly_mat IDENTITY работать, поэтому прямо сейчас у меня есть функция return_id(), которая выводит идентификационную матрицу, но мне не нужно будет вычислять новую идентификационную матрицу каждый раз, когда я хочу вернуться Это.
Есть ли способ инициализировать статический const poly_mat IDENTITY в моем файле cpp, чтобы я мог просто ссылаться на одну и ту же копию матрицы идентичности, а не на необходимость генерировать новую. Это осложняется тем, что матричные элементы являются полиномами mod p, а p не выбирается до первой строки моего int main(). Может быть, мне нужно сделать IDENTITY указателем на что-то и инициализировать его, как только я установил p? Может ли IDENTITY быть статическим const? Я имею в виду?
Спасибо.
Вы можете получить больше ответов, если вы добавите тег для соответствующего языка. Вы также можете указать ошибку, которую вы получаете при попытке компиляции. –