如何使用基类的数据成员作为派生类'构造函数? (在C ++中)

时间:2017-12-21 01:41:41

标签: c++ oop

我试图使用基类的数据成员作为我的派生类'构造函数,但每当我尝试运行程序时似乎都会出错。以下是我的代码:

#include <iostream>
using namespace std;

class Book
{
protected:
    string title;
    string author;
public:
    Book(string t, string a)
    {
        title = t;
        author = a;
    }
};

class MyBook: public Book
{
protected:
    int price;
public:
    MyBook(string T, string A, int P): Book(title, author)
    {

        price = P;
    }
    void display()
    {
        cout << "Title: " << title << endl;
        cout << "Author: " << author << endl;
        cout << "Price: " << price << endl;
    }
};
int main()
{
    MyBook One("abc", "def", 2);
    One.display();
}

创建这个衍生类&#39;似乎是我的错。构造函数?

2 个答案:

答案 0 :(得分:0)

你写的是什么:

MyBook(string T, string A, int P): Book(title, author)

我猜你真正想要的是什么:

MyBook(string T, string A, int P): Book(T, A)

:Book(T, A)部分是将参数传递给基类构造函数。此处未定义titleauthor,但定义了TA

可能的混淆源是titleauthor碰巧是基类中使用的名称。您应该注意,您正在将派生类构造函数中的信息传递给基类构造函数,而不是相反。因此,派生类构造函数应该告诉基类构造函数TA

答案 1 :(得分:0)

MyBook(字符串T,字符串A,int P):书(标题,作者)错误 标题和作者在那里不被承认。使用T和A:  MyBook(字符串T,字符串A,int P):Book(T,A)