56

我有一个名为:

void initializeJSP(string Experiment)

在我的 MyJSP.h 文件中,我有:

2: void initializeJSP(string Experiment);

当我编译我得到这个错误:

MyJSP.h:2 错误:变量或字段 initializeJSP 声明为 void

哪里有问题?

4

6 回答 6

85

例如,在这种情况下发生在这里:

void initializeJSP(unknownType Experiment);

尝试使用std::string而不是仅使用string(并包含<string>标题)。C++ 标准库类位于命名空间std::中。

于 2008-12-12T21:36:22.867 回答
42

这实际上不是函数为“void”的问题,而是函数参数的问题。我认为这只是 g++ 给出了一个无用的错误消息。

编辑:在接受的答案中,解决方法是使用std::string而不是string.

于 2011-09-26T06:36:06.603 回答
0

或者像我的情况一样,解决方案只是在中声明合适的标题main.cpp而不是在中的标题function.cpp,试图包含那个..

...

#include"header.h" //instead of "function.cpp"
int main() 

并且在function.cpp

#include"header.h"
void ()

这样编译和链接就可以正常工作...

于 2021-12-13T16:13:50.013 回答
-1

问题是,当你调用一个函数时,你不应该写函数的类型,这意味着你应该像调用函数一样

initializeJSP(Experiment);
于 2017-05-13T23:25:03.507 回答
-1

其他答案给出了非常准确的回答,我不完全确定您的问题到底是什么(如果只是由于您的程序中的未知类型,那么您将得到更多明确的错误以及您提到的错误)但是要添加有关更多信息,如果我们在调用函数时将函数类型添加为 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)) ===|

所以从这个例子中我们可以看出,这个原因也可能导致“变量或字段声明为无效”错误。

于 2018-06-21T15:05:30.330 回答
-2

你在调用你的函数时放了 void 吗?

例如:

void something(int x){
    logic..
}

int main() {

    **void** something();

    return 0;

}

如果是这样,您应该删除最后一个空白。

于 2019-04-12T19:47:06.240 回答