2016-08-14 93 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

相关问题