2017-04-13 5 views
0

私はこの同じ問題を抱えている人を見たことがあるが、解決策が私のために働かないか、誤解しているかもしれない前に、Incomplete TypeまたはExpected Initializerを無効にする。従業員は顧客になることができますが、ランク、ユーザー名、パスワードがあるため、クラスの従業員はクラスの顧客から継承します。私が継承すると、それは不完全なタイプの無効な使用を教えてくれます。しかし、私はすでにソリューションを試して、私の派生クラス(従業員)で#include "customer.h"またはforward宣言 "クラス顧客;"または私のemployee.hファイルの両方を行うが、それは私にこのエラーを伝えますか{ は本当にコンパイラがする必要がない場合にのみ、タイプの宣言を前方に使用することができますC++ {Token

#ifndef CUSTOMER_H 
#define CUSTOMER_H 

#include "items.h" 

class items; 

class employee; 

namespace Ui { 
class customer; 
} 

class customer : public QMainWindow 
{ 

    Q_OBJECT 

public: 
    explicit customer(QWidget *parent = 0); 
    customer(int, QString, QString, QString, QDate, QString, QString, int, int, QString); 

    ~customer(); 

    //START set and get functions 
    void setID(int); 
    int getID(); 

    void setFirstName(QString); 
    QString getFirstName(); 

    void setLastName(QString); 
    QString getLastName(); 

    void setGender(QString); 
    QString getGender(); 

    void setDateOfBirth(QDate); 
    QDate getDateOfBirth(); 

    void setStreet(QString); 
    QString getStreet(); 

    void setTown(QString); 
    QString getTown(); 

    void setDistrictID(int); 
    int getDistrictID(); 

    void setContactNumber(int); 
    int getContactNumber(); 

    void setEmail(QString); 
    QString getEmail(); 
    //END set and get functions 

    virtual void resetFields(); 

protected: 
    Ui::customer *ui; 


private slots: 
    void on_pushButton_AddCustomer_clicked(); 

    void on_pushButton_Clear_clicked(); 

    void on_pushButton_ViewAllCustomers_clicked(); 

    void on_pushButton_AddEmployee_emp_clicked(); 


    void on_pushButton_Clear_emp_clicked(); 

    void on_buying_pushButton_clicked(); 

    void on_buying_pushButton_emp_clicked(); 

}; 

#endif // CUSTOMER_H 


EMPLOYEE CLASS BELOW 

#ifndef EMPLOYEE_H 
#define EMPLOYEE_H 


#include "ui_customer.h" 
#include "database.h" 

#include <QMainWindow> 

#include "customer.h" 
class customer; 
class employee : public customer 
{ 
    Q_OBJECT 
public: 

    employee(int, QString, QString, QString, QDate, QString, QString, int, int, QString, QString, QString, QString); 

    void setRank(QString); 
    QString getRank(); 

    void setUsername(QString); 
    QString getUsername(); 

    void setPassword(QString); 
    QString getPassword(); 

    virtual void resetFields(); 

}; 

#endif // EMPLOYEE_H 
+1

エラーメッセージをコピーして質問に貼り付けてください。 – lit

+0

employee.h:12:エラー: '{'トークンの前に期待されるクラス名 { ^ –

+0

'items.h'に' employee.h'が含まれていますか?その場合、 'customer'の前に' employee'を定義します –

答えて

1

助けを必要とする前に、それが予想されるクラス名を語ります型のサイズやレイアウトについて何か知っている。これは、前方宣言型へのポインタまたは参照を持っている場合に当てはまります。型をインスタンス化したり、継承したりする場合はそうではありません。