【发布时间】:2014-11-26 16:18:00
【问题描述】:
我对 C++ 有一个菜鸟问题。
我有一本课本:
class Book {
public:
string name;
Author author;
double price;
int qtyInStock;
public:
Book(const string & name,
const Author & author,
double price,
int qtyInStock = 0);
string getName() const;
Author getAuthor() const;
double getPrice() const;
void setPrice(double price);
int getQtyInStock() const;
void setQtyInStock(int qtyInStock);
void print() const;
string getAuthorName() const;
};
使用构造函数:
Book::Book(
const string & name,
const Author & author,
double price,
int qtyInStock)
: name(name), author(author)
{ // Init object reference in member initializer list
// Call setters to validate price and qtyInStock
setPrice(price);
setQtyInStock(qtyInStock);
}
现在我想创建一个派生自它的新类“BookDigital”,如下所示:
class DigitalBook:public Book
{
public:
string site;
DigitalBook(const string & name,
const Author & author,
double price,
int qtyInStock = 0,
string & site);
};
使用构造函数:
DigitalBook:DigitalBook(
const string & name,
const Author & author,
double price, int qtyInStock,
string & site)
: name(name), author(author) { // Init object reference in member initializer list
// Call setters to validate price and qtyInStock
setPrice(price);
setQtyInStock(qtyInStock);
}
我为电子书添加了一个会员“网站”
当我编译这个时,它显示消息错误:
||=== Build: Debug in Test C++ (compiler: GNU GCC Compiler) ===|
C:\Users\aalovisi\Desktop\Test C++\Book.h|34|error: default argument missing for parameter 5 of 'DigitalBook::DigitalBook(const string&, const Author&, double, int, std::string&)'|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|14|error: found ':' in nested-name-specifier, expected '::'|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp||In constructor 'DigitalBook::DigitalBook(const string&, const Author&, double, int, std::string&)':|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|15|error: class 'DigitalBook' does not have any field named 'name'|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|15|error: class 'DigitalBook' does not have any field named 'author'|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|15|error: no matching function for call to 'Book::Book()'|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|15|note: candidates are:|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|7|note: Book::Book(const string&, const Author&, double, int)|
C:\Users\aalovisi\Desktop\Test C++\Book.cpp|7|note: candidate expects 4 arguments, 0 provided|
C:\Users\aalovisi\Desktop\Test C++\Book.h|8|note: Book::Book(const Book&)|
C:\Users\aalovisi\Desktop\Test C++\Book.h|8|note: candidate expects 1 argument, 0 provided|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
为什么?谢谢你的帮助
【问题讨论】:
-
您是否阅读了错误消息、评估了您遇到的错误并尝试纠正它们?第一个说“参数 5 缺少默认参数。”
-
如果您不知道该消息的含义,请尝试搜索它。例如,谷歌搜索“默认参数”会出现“learncpp.com/cpp-tutorial/77-default-parameters”,它解释了默认参数(或参数)是什么、它们如何工作、它们必须满足什么要求等。
标签: c++ class inheritance member derived