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

时间:2013-03-01 01:09:04

标签: c++ g++

我正在努力学习一个我在课堂上无法完成的教程,而且我很难搞清楚我的错误。我之前从未见过明确的资格错误,所以我甚至不知道从哪里开始。我在网上找到这种错误的唯一资源是在使用命名空间时我必须做的,我不认为我,至少没有显式(除了命名空间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*)’

这是我的promptForAnimals函数:

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
  }

}

我的printDanceAnimal为空,只有:

void::printDance(Animal*)
{
}

错误很可能与我的头文件有关,所以这里有很好的衡量标准:

#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

3 个答案:

答案 0 :(得分:2)

您在这些函数定义中错过了类名:

更新

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

要:

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

答案 1 :(得分:1)

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

这是错误的。应该是:

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

答案 2 :(得分:0)

当您明确指定已经打开的名称空间时,会出现此错误。

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

我怀疑,空名称空间是始终打开的全局名称空间的名称,因此这就是为什么在您的情况下会发生这种错误的原因,

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