【问题标题】:variable or field declared void声明为 void 的变量或字段
【发布时间】:2010-09-26 17:24:34
【问题描述】:

我有一个函数叫做:

void initializeJSP(string Experiment)

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

2: void initializeJSP(string Experiment);

当我编译时出现这个错误:

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

问题出在哪里?

【问题讨论】:

  • 编译器在报告错误时指向哪一行代码?您使用什么语言?有问题的函数周围还有哪些其他代码?请提供更多信息。

标签: c++ string void


【解决方案1】:

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

void initializeJSP(unknownType Experiment);

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

【讨论】:

  • 我遇到了同样的问题。使用std::string 而不是简单的string 为我解决了这个问题。我发现我不必在标题中包含<string>。我刚刚逃脱了它还是标题中的<string> 不是必需的?如果它有所作为,根据 Paul Price 的回答,我使用的是 g++。
【解决方案2】:

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

编辑:与接受的答案一样,解决方法是使用std::string 而不仅仅是string

【讨论】:

  • 函数参数有什么问题呢? (我知道接受的答案解释了它,我只是觉得这个特定的答案不是特别有用)。
【解决方案3】:

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

initializeJSP(Experiment);

【讨论】:

  • 你的例子是错误的,你不能用类型作为参数调用函数,问题是关于别的东西。
  • 你说得对,void func(int a); 之类的东西不是函数调用。但是 OP 有一个不同的问题。
  • 我不认为这就是 OP 的意思。
【解决方案4】:

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

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

【讨论】:

  • 澄清一下:这个例子通过在第 10 行的函数 call 之前添加一个(错误的)“void”来产生一个“declared void”错误。
【解决方案5】:

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

例如:

void something(int x){
    logic..
}

int main() {

    **void** something();

    return 0;

}

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

【讨论】:

    【解决方案6】:

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

    ...

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

    function.cpp

    #include"header.h"
    void ()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多