Ошибка C ++: выражение не может использоваться как функция - PullRequest
0 голосов
/ 26 апреля 2020

Я пару лет писал программу на C ++ go и довольно часто ее использую. Эта программа использует библиотеку LTENSOR, которую я просто использую, и я не до конца осознаю, что там происходит. Через 2 дня go после обычной установки * Ubuntu 18.04 * я установил последнюю версию компилятора g cc (Ubuntu 7.5.0-3ubuntu1 ~ 18.04). Теперь, когда я запускаю ту же программу, что запускаю пару лет, я получаю следующую ошибку:

В файле, включенном в / home / alex / Documents / My Soilab / Soillab / ltensor /./ base /Array_base.h:29:0, из / home / alex / Documents / My Soilab / Soillab / ltensor / LTensor.h: 32, из / home / alex / Documents / My Soilab / Soillab / Soillab. cpp: 14 : / home / alex / Документы / My Soilab / Soillab / ltensor /./ base /../ storage / storage.h: В функции-член 'long int GenericStorage :: getBeginAddress (int, int)': / home / alex / Documents / My Soilab / Soillab / ltensor /./ base /../ storage / storage.h: 207: 62: ошибка: выражение не может быть использовано как функция gsize = (dim == 0? 0: stride (getPos (ordering , дим-1, ранг))); ^ [Закончено в 0.9 с кодом выхода 1] [shell_cmd: g ++ "/ home / alex / Documents / My Soilab / Soillab / Soillab. cpp" -o "/ home / alex / Documents / My Soilab / Soillab / Soillab "] [dir: / home / alex / Documents / My Soilab / Soillab] [путь: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / snap / bin]

Кажется, что это происходит из кода ниже

long getBeginAddress(int offset,int dim){

    long gsize=0;
    gsize= (dim==0?0: stride(getPos(ordering,dim-1,rank) )) ;
    return gsize+offset;
    }

Я не могу понять, почему я получаю эта ошибка. Благодаря.

1 Ответ

2 голосов
/ 26 апреля 2020

Неправильная строка

gsize= (dim==0?0: stride(getPos(ordering,dim-1,rank) )) ;

, кажется, происходит от https://github.com/lromor/ltensor/blob/master/ltensor/storage/storage.h#L207

Но в строке # 84 stride объявлено как long* stride: https://github.com/lromor/ltensor/blob/master/ltensor/storage/storage.h#L84

То есть stride - это указатель, а не функция.

...