переменная или поле объявлены недействительными

StackOverflow https://stackoverflow.com/questions/364209

  •  21-08-2019
  •  | 
  •  

Вопрос

У меня есть функция:

void initializeJSP(string Experiment)

И в моем файле MyJSP.h у меня есть:

2: void initializeJSP(string Experiment);

И когда я компилирую, я получаю эту ошибку:

Ошибка MyJSP.h:2:переменная или поле InitializeJSP объявлена ​​недействительной

В чем проблема?

Это было полезно?

Решение

Например, это происходит в этом случае здесь:

void initializeJSP(unknownType Experiment);

Попробуйте использовать std::string вместо того, чтобы просто string (и включить <string> заголовок).Классы стандартной библиотеки C++ находятся в пространстве имен. std::.

Другие советы

На самом деле это не проблема с «недействительной» функцией, а проблема с параметрами функции.Я думаю, что это просто g++ выдает бесполезное сообщение об ошибке.

Дело в том, что при вызове функции не следует писать тип функции, то есть вызывать функцию следует так же, как

initializeJSP(Experiment);

Другие ответы дали очень точные ответы, и я не совсем уверен, в чем именно заключалась ваша проблема (если бы это было связано только с неизвестным типом в вашей программе, вы бы получили еще много явных ошибок наряду с той, которую вы упомянули), но добавить Дополнительная информация: эта ошибка также возникает, если мы добавляем тип функции как void при вызове функции, как вы можете видеть ниже:

#include<iostream>
#include<vector>
#include<utility>
#include<map>
using namespace std;
void fun(int x);
main()
{
   int q=9;
   void fun(q); //line no 10
}
void fun(int x)
{
    if (x==9)
        cout<<"yes";
    else
        cout<<"no";
}

Ошибка:

 C:\Users\ACER\Documents\C++ programs\exp1.cpp|10|error: variable or field 'fun' declared void|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Как мы видим из этого примера, эта причина также может привести к ошибке «переменная или поле объявлены недействительными».

Вы поставили void при вызове функции?

Например:

void something(int x){
    logic..
}

int main() {

    **void** something();

    return 0;

}

Если это так, вам следует удалить последнюю пустоту.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top