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

问题描述 投票:1回答:3

我正在尝试上课时无法完成的教程,而且我很难弄清自己的错误。我之前从未见过明显的资格错误,所以我什至不知道从哪里开始。在使用命名空间时,我只能在网上找到针对此类错误的唯一资源,而且我不认为我是(至少不是明确地)(除了命名空间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
c++ g++
3个回答
2
投票

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

更新:

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

收件人:

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

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

这是错误的。应该是:

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

0
投票

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

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

我认为,空名称空间是始终打开的全局名称空间的名称,所以这就是发生这种错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.