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

У меня есть функция под названием:

void initializeJSP(string Experiment)

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

2: void initializeJSP(string Experiment);

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

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

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

12.12.2008 21:31:32
На какую строку кода указывает компилятор, когда сообщает об этой ошибке? Какой язык вы используете? Какой еще код находится вокруг рассматриваемой функции? Больше информации, пожалуйста.
Rob Kennedy 12.12.2008 21:34:20
5 ОТВЕТОВ
РЕШЕНИЕ

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

void initializeJSP(unknownType Experiment);

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

76
12.12.2008 21:36:22

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

35
26.09.2011 06:36:06
В чем проблема с параметрами функции? (Я знаю, что принятый ответ объясняет это, но я не считаю этот конкретный ответ особенно полезным).
Dukeling 17.08.2015 13:01:16

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

initializeJSP(Experiment);
-1
6.04.2018 08:30:20
Ваш пример неверен, вы не можете вызвать функцию с типом в качестве параметра, и вопрос о другом.
Logman 13.05.2017 23:43:25
Вы правы, что-то вроде void func(int a);не является вызовом функции. Но у ОП была другая проблема.
HolyBlackCat 13.05.2017 23:47:09
Я не думаю, что это то, что имел в виду ОП.
Liran Funaro 14.05.2017 00:18:27

Другие ответы дали очень точные ответы, и я не совсем уверен, в чем именно заключалась ваша проблема (если бы это было просто из-за неизвестного типа в вашей программе, то вы бы получили гораздо больше явных ошибок, чем упомянутое вами), но добавьте при дальнейшей информации эта ошибка также возникает, если мы добавляем тип функции как 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)) ===|

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

-1
21.06.2018 15:05:30
Для того, чтобы уточнить: этот пример производит «признана недействительной» ошибку путем добавления (ошибочное) «пустоты» , предшествующих функции вызова в строке 10.
Technophile 9.04.2019 21:08:32

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

Например:

void something(int x){
    logic..
}

int main() {

    **void** something();

    return 0;

}

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

-3
12.04.2019 19:48:50