-1

这是整个代码。

#include <iostream>
#include <cstring>
using namespace std;

enum poz {Vraboten,Direktor,Shef};

class Vraboten{
private:
    char name[100];
    int plata;
    poz pozicija;
public:
    Vraboten();
    Vraboten(char *n,int p, poz pz)
    {
        strcpy(name,n);
        plata=p;
        pozicija=pz;
    }
    ~Vraboten();
    void setName (const char *n)
    {strcpy(name,n);}

    void setPlata (int p)
    {plata=p;}

    void setPozicija(poz pz)
    {pozicija=pz;}

    const char* getName(){return name;}
    const int getPlata() {return plata;}
    void getPozicija (){
    switch(pozicija){
    case 0:cout<<"Vraboten";
    case 1:cout<<"Direktor";
    case 2:cout<<"Shef";
    default:cout<<"Invalid entery";
    }}


};
void Sort(Vraboten emp[],int br);

int main()
{
    Vraboten vrab[100];
    char ime[100];
    int payment,pozition;
    int broj,i;
    cout<<"Vnesi broj na vraboteni";
    cin>>broj;
    for(i=0;i<broj;i++)
    {
        cout<<"Vnesi ime na vraboten broj "<<i<<" ";
        cin>>ime;
        cout<<"Vnesi plata na vraboten broj "<<i<<" ";
        cin>>paymen;
        cout<<"Vnesi pozicija na vraboten broj "<<i<<" 0-Vraboten, 1-Direktro, 2-Shef";
        cin<<pozition;
       vrab[i].setName(ime);
       vrab[i].setPlata(paymen);
       vrab[i].setPozicija(poz(pozition));

       }
       Sort(vrab,broj);
       for (int i = 0; i < n; i ++) {

cout << i + 1 << ". " << vrab [i]. getName () << "\t"
<< vrab [i]. getPlata () << "\t"
<< vrab [i]. getPozicija () << endl ;

}

}
void Sort(Vraboten emp[],int br)
{
    int i,j;
    Vraboten temp;
    for(i=0;i<br;i++)
        for(j=i;j<br;i++)
    {
        if(emp[i].getPlata()<emp[j].getPlata())
        temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
}

它给了我一个错误:字段'Sort'的变量声明为void,在第42行中,在main之前声明了Sort。我真的不知道这是什么意思?我正在等待快速回复。我知道这篇文章编辑得不是很好,但我没有太多时间,所以如果你知道回复的话。

4

1 回答 1

4

您的错误是由于全局命名空间中有两件事称为Vraboten

enum poz {Vraboten,Direktor,Shef};
//        ^^^^^^^^

class Vraboten{
//    ^^^^^^^^

您需要一种方法来消除这两个Vrabotens 的歧义。如果您使用的是 C++11,则可以将 声明enumenum class

enum class poz {Vraboten,Direktor,Shef};

如果您这样做,您将不得不将对此枚举的值的引用更改为poz::Vrabotenpoz::Direktorpoz::Shef

如果您没有支持 C++11 的编译器,您可以通过将枚举声明包装在命名空间中来模拟这一点:

namespace poz {
    enum poz {Vraboten,Direktor,Shef};
}

如上所述,您必须在enum值前面加上poz,但在声明这种enum类型的变量时,您也必须使用poz::poz myVar

于 2013-08-18T13:41:17.803 回答