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