C++ C++;错误:声明中的显式限定

C++ C++;错误:声明中的显式限定,c++,g++,C++,G++,我正在努力完成一个在课堂上无法完成的教程,我很难找出我的错误。我以前从未看到过明确的鉴定错误,所以我甚至不知道从哪里开始。我能在网上找到的关于此类错误的唯一资源是在使用名称空间时,我不认为我是,至少不是明确的(除了名称空间std) 我确信我在某个地方犯了一个愚蠢的错误,但我得到的错误如下: View.cpp:12:55: error: explicit qualification in declaration of ‘void promptForAnimals(Animal**, int&

我正在努力完成一个在课堂上无法完成的教程,我很难找出我的错误。我以前从未看到过明确的鉴定错误,所以我甚至不知道从哪里开始。我能在网上找到的关于此类错误的唯一资源是在使用名称空间时,我不认为我是,至少不是明确的(除了名称空间std)

我确信我在某个地方犯了一个愚蠢的错误,但我得到的错误如下:

View.cpp:12:55: error: explicit qualification in declaration of ‘void promptForAnimals(Animal**, int&)’
View.cpp:53:25: error: explicit qualification in declaration of ‘void printDance(Animal*)’
这是我的动物提示功能:

void::promptForAnimals(Animal* barn[], int& numAnimals)
{

  //Animal* barn[MAX_ANIMALS];
  int num;
  string name;

  cout << "How many birds? ";
  cin  >> num; cin.ignore();
  for (int i=0; i<num; i++) {
    cout << "Name " << i+1 << ":  ";
    getline(cin, name);
    barn[numAnimals++] = new Bird(name);
  }

  etc
  }

}
这些错误很可能与我的头文件有关,因此这里有一个很好的衡量标准:

#ifndef VIEW_H
#define VIEW_H
#include "Animal.h"
#include "defs.h"
#include <iostream>
using namespace std;

class View
{
    public:
        View();
        ~View();
        void promptForAnimals(Animal**, int&);
        void printDance(Animal*);

};

#endif
\ifndef视图
#定义视图
#包括“Animal.h”
#包括“defs.h”
#包括
使用名称空间std;
类视图
{
公众:
视图();
~View();
动物(动物**,国际和)无效提示;
舞蹈(动物*);
};
#恩迪夫

这些函数定义中缺少类名:

更新:

void::promptForAnimals(Animal* barn[], int& numAnimals)
void::printDance(Animal*)
致:


这些函数定义中缺少类名:

更新:

void::promptForAnimals(Animal* barn[], int& numAnimals)
void::printDance(Animal*)
致:

这是错误的。应该是:

void View::promptForAnimals(Animal* barn[], int& numAnimals)
{
    // ...
}
这是错误的。应该是:

void View::promptForAnimals(Animal* barn[], int& numAnimals)
{
    // ...
}

当您显式指定已打开的命名空间时,会出现此错误

namespace SomeName {
    int SomeName::someFunc() { return 0; } //error
}
我怀疑,空名称空间是始终打开的全局名称空间的名称,因此这就是为什么在您的案例中会发生此类错误,这相当于:

int ::someFunc() { return 0; } //error again

当您显式指定已打开的命名空间时,会出现此错误

namespace SomeName {
    int SomeName::someFunc() { return 0; } //error
}
我怀疑,空名称空间是始终打开的全局名称空间的名称,因此这就是为什么在您的案例中会发生此类错误,这相当于:

int ::someFunc() { return 0; } //error again

我知道这是个愚蠢的错误!非常感谢你!今天我盯着代码看了太久了。我知道这是个愚蠢的错误!非常感谢你!今天我盯着代码看了太久了。