我正在尝试上课时无法完成的教程,而且我很难弄清自己的错误。我之前从未见过明显的资格错误,所以我什至不知道从哪里开始。在使用命名空间时,我只能在网上找到针对此类错误的唯一资源,而且我不认为我是(至少不是明确地)(除了命名空间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*)’
这是我的hintForAnimals函数:
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
您在这些函数定义中缺少类名:
更新:
void::promptForAnimals(Animal* barn[], int& numAnimals)
void::printDance(Animal*)
收件人:
void View::promptForAnimals(Animal* barn[], int& numAnimals)
void View::printDance(Animal*)
void::promptForAnimals(Animal* barn[], int& numAnimals)
这是错误的。应该是:
void View::promptForAnimals(Animal* barn[], int& numAnimals)
{
// ...
}
当您明确指定已经打开的名称空间时,会出现此错误。
namespace SomeName {
int SomeName::someFunc() { return 0; } //raise an error
}
我认为,空名称空间是始终打开的全局名称空间的名称,所以这就是发生这种错误的原因。