1

我正在尝试编写一个我无法在课堂上完成的教程,而且我很难找出我的错误。我以前从未见过明确的限定错误,所以我什至不知道从哪里开始。在使用命名空间时,我可以在网上找到此类错误的唯一资源,我认为我不是,至少不是明确的(命名空间 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
4

3 回答 3

3

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

更新:

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

到:

void View::promptForAnimals(Animal* barn[], int& numAnimals)
void View::printDance(Animal*)
于 2013-03-01T01:12:19.573 回答
1
void::promptForAnimals(Animal* barn[], int& numAnimals)

这是错误的。应该:

void View::promptForAnimals(Animal* barn[], int& numAnimals)
{
    // ...
}
于 2013-03-01T01:13:02.077 回答
0

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

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

我怀疑,空命名空间是始终打开的全局命名空间的名称,所以这就是为什么在你的情况下会出现这种错误,这相当于:

int ::someFunc() { return 0; } //error again
于 2019-10-30T15:04:02.060 回答