переменная или поле объявлены недействительными
Вопрос
У меня есть функция:
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;
}
Если это так, вам следует удалить последнюю пустоту.