我有一个名为:
void initializeJSP(string Experiment)
在我的 MyJSP.h 文件中,我有:
2: void initializeJSP(string Experiment);
当我编译我得到这个错误:
MyJSP.h:2 错误:变量或字段 initializeJSP 声明为 void
哪里有问题?
例如,在这种情况下发生在这里:
void initializeJSP(unknownType Experiment);
尝试使用std::string
而不是仅使用string
(并包含<string>
标题)。C++ 标准库类位于命名空间std::
中。
这实际上不是函数为“void”的问题,而是函数参数的问题。我认为这只是 g++ 给出了一个无用的错误消息。
编辑:在接受的答案中,解决方法是使用std::string
而不是string
.
或者像我的情况一样,解决方案只是在中声明合适的标题main.cpp
而不是在中的标题function.cpp
,试图包含那个..
...
#include"header.h" //instead of "function.cpp"
int main()
并且在function.cpp
#include"header.h"
void ()
这样编译和链接就可以正常工作...
问题是,当你调用一个函数时,你不应该写函数的类型,这意味着你应该像调用函数一样
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;
}
如果是这样,您应该删除最后一个空白。