我试图使用基类的数据成员作为我的派生类'构造函数,但每当我尝试运行程序时似乎都会出错。以下是我的代码:
#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;似乎是我的错。构造函数?
答案 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)
部分是将参数传递给基类构造函数。此处未定义title
和author
,但定义了T
和A
。
可能的混淆源是title
和author
碰巧是基类中使用的名称。您应该注意,您正在将派生类构造函数中的信息传递给基类构造函数,而不是相反。因此,派生类构造函数应该告诉基类构造函数T
和A
。
答案 1 :(得分:0)
MyBook(字符串T,字符串A,int P):书(标题,作者)错误 标题和作者在那里不被承认。使用T和A: MyBook(字符串T,字符串A,int P):Book(T,A)