2016-08-14 96 views
0

程序工作,但我不知道什麼是錯誤的構造函數,因爲每次程序運行時,它會得到這個錯誤「警告:基類'Alat'在這裏使用時未初始化訪問'Alat :: ime '[ - 初始化]「。我想這是錯誤的,我怎麼從基類調用構造函數,但我不知道什麼是問題。真的需要幫助,提前tnx。構造函數在基類和派生類

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

class Alat{ 
protected: 
    string ime; 
    int serBr; 
    int cena; 

public: 

    void setIme(string i); 
    string getIme(); 

    void setSerBr(int sb); 
    int getSerBr(); 

    void setCena(int c); 
    int getCena(); 

    Alat(); 
    Alat(string i, int sb, int c) 
    :ime(i), 
    serBr(sb), 
    cena(c) 
    {} 

    void info(); 


    ~Alat(); 
}; 

#include "Alat.h" 

class Rucni : public Alat{ 
protected: 
    int minGodKor; 

public:  

    Rucni():Alat(ime, serBr, cena) //I think here is problem, is it wrong called?  
    {} 

    int getminGodKor(); 
    void setminGodKor(int min); 

    void info(); 

    ~Rucni(); 

}; 
+4

用'ime'初始化'Alat',這是'Alat'的成員.... –

+0

我很確定你在運行程序時得到了警告,但是當你編譯它時。瞭解兩者之間的差異很重要。 –

回答

1

讓孩子默認的構造函數調用默認的父類的構造,並用參數調用父類中的對應一個創建另一個孩子的構造函數:你試圖

#include <string> 

using std::string; 


class Alat 
{ 
protected: 
    string ime; 
    int serBr; 
    int cena; 

public: 

    void setIme(string i) 
    { 
     ime = i; 
    } 

    string getIme() 
    { 
     return ime; 
    } 

    void setSerBr(int sb) 
    { 
     serBr = sb; 
    } 

    int getSerBr() 
    { 
     return serBr; 
    } 

    void setCena(int c) 
    { 
     cena = c; 
    } 

    int getCena() 
    { 
     return cena; 
    } 

    Alat() 
    { 
    } 

    Alat(string i, int sb, int c) : ime(i), serBr(sb), cena(c) 
    { 
    } 

    ~Alat() 
    { 
    } 
}; 


class Rucni : public Alat 
{ 
protected: 
    int minGodKor; 

public:  

    Rucni() // implicit call of the parent default constructor 
    { 
    } 

    Rucni(string i, int sb, int c) : Alat(i, sb, c) // explicit call of the corresponding parent constructor 
    { 
    } 

    int getminGodKor() 
    { 
     return minGodKor; 
    } 

    void setminGodKor(int min) 
    { 
     minGodKor = min; 
    } 

    ~Rucni() 
    { 
    } 
}; 


int main() 
{ 
    Rucni r; 

    return 0; 
} 
+0

我在Alat.cpp中調用get/set,並且無法使其工作,但是這種方式起作用,tnx太多了! – Beansolder

+0

創建並初始化對象後調用Getters和Setter。構造函數是爲了將成員設置爲期望值而調用的第一個「方法」。 – karastojko

相關問題