2014-01-30 28 views
0

之前的預期類名此代碼有什麼問題?我得到[錯誤]期待'{'令牌(Pralka.h第14行)有什麼問題 - 在'{'令牌

之前預期的類名稱我知道這裏有很多類似的問題。我也一樣,但我無法克服它。所以,我想告訴你我的代碼..

我寫了這個非常簡單的代碼來訓練自己的繼承和虛函數..

main.cpp中:

#include <iostream> 
    #include <fstream> 
    #include <string> 

    #include "AGD.h" 

    using namespace std; 

    int main() {   
    Pralka p1("polar", 1250); 
    AGD *A; 
    A = &p1; 
    } 

AGD .H:

#ifndef AGD_H 
#define AGD_H 

#include <iostream> 

#include "Pralka.h" 

class AGD { 

    private: 

     static int liczba_sprzetow; 

    public: 

     AGD(){ 
      liczba_sprzetow++; 
     } 

     ~AGD(){ 
      liczba_sprzetow--; 
     } 


     static int get_liczba_sprzetow() { 
      return liczba_sprzetow; 
     } 

     virtual double get_cena() { 
     } 

}; 

#endif 

Pralka.h:

#ifndef PRALKA_H 
#define PRALKA_H 

#include <iostream> 
#include <string> 



using namespace std; 

class Pralka : public AGD 
{ 
    private: 

     string marka; 
     double cena; 

    public: 

     Pralka(string m, double c): marka(m), cena(c){ 
     } 

     Pralka(){ 
     } 
     ~Pralka(){ 
     } 


     string get_marka() const{ 
      return marka; 
     } 

     double get_cena() const{ 
      return cena; 
     } 

     Pralka& operator=(const Pralka& Q){ 
     marka=Q.marka; 
     cena=Q.cena; 
     } 

}; 

#endif 

我也得到[錯誤]不能分配但爲什麼將 'Pralka *' 到 'AGD *'?我不明白(main.cpp第29行)。

+3

縮進您的代碼以建立一個更美好的世界。 – Maroun

+1

我假設編譯器還打印出文件和行號? – bereal

+1

你有你的包括錯誤的方式 - pralca.h應該'#include「agd.h」'不是相反的方向 – benjymous

回答

5

AGD.h包括Pralka.h,但它應該是其他方式(Pralka.h應該包括AGD.h)。

原因是Pralka需要看到AGD聲明從它繼承。 AGD不需要看到Pralka聲明。

+0

現在我得到** [錯誤]'Pralka'沒有在此範圍內聲明**在main.cpp中。 在main.cpp中包含哪個文件? – Mongow

+0

您還需要在'main.cpp'中包含'Pralka.h'。您可以安全地在其中包含'AGD.h',儘管這不是必須的。重要的事情是:(1)任何用法必須能夠看到聲明,並且(2)不會以兩個不同的標題包括彼此。 –