gpt4 book ai didi

c++ - 代码不会继承,我不知道为什么

转载 作者:行者123 更新时间:2023-11-30 03:46:38 26 4
gpt4 key购买 nike

这是我的第一个问题,请多多关照 :)

我正在编写一个程序来接收名字、姓氏和数字/电子邮件地址,并且必须使用继承从基类 Person 创建一个类 person_with_telephone

我已经尝试过,甚至接近成功,但总是会弹出一些错误,因为我是 C++ 的新手,所以我不知道它们是什么意思。

这里是有问题的代码:

class Person
{

private:
string m_FirstName, m_LastName, m_email, m_telephone;

public:
Person(const string& firstName, const string& lastName, const string telephone) :
m_FirstName(firstName), m_LastName(lastName), m_telephone(telephone)
{}

string get_name() const
{
return m_FirstName;
}
string get_surname() const
{
return m_LastName;
}

bool has_telephone_p()
{
if (m_telephone == "")
{
return false;
cout << "You have no phone number registered" << endl;
}

else
{
return true;
cout << "Your number is: " << m_telephone << endl;
}
}

string get_telephone() const
{
return m_telephone;
}

bool has_email_p()
{

}
};

class Person_with_telephone: public Person
{

private:
string m_telephone;

public:
Person(const string& telephone) : m_telephone(telephone)
{};

string set_telephone()
{

}

string get_telephone()
{

}


};

忽略空成员函数,那些稍后出现。关于我为什么会收到错误的任何想法:

main.cc: In constructor ‘Person_with_telephone::Person_with_telephone(const string&)’:
main.cc:59:73: error: no matching function for call to ‘Person::Person()’
Person_with_telephone(const string& telephone) : m_telephone(telephone)
^
main.cc:59:73: note: candidates are:
main.cc:13:3: note: Person::Person(const string&, const string&, std::string)
Person(const string& firstName, const string& lastName, const string telephone) :
^
main.cc:13:3: note: candidate expects 3 arguments, 0 provided
main.cc:6:7: note: Person::Person(const Person&)
class Person
^
main.cc:6:7: note: candidate expects 1 argument, 0 provided
<builtin>: recipe for target 'main' failed
make: *** [main] Error 1

Compilation exited abnormally with code 2 at Tue Dec 1 10:17:39

感谢您的帮助! :)

最佳答案

Person_with_telephone 。因此,Person_with_telephone 的构造函数也在构造一个 Person。您没有它可以调用的默认构造函数,因此您必须向 Person 构造函数提供参数。

这是语法:

class Int
{
public:
int j;
Int (int q) : j(q) { ; }
};
class IntAndString : public Int
{
public:
std::string t;
IntAndString(int q, std::string s) : Int(q), t(s) { ; }
};

此外,由于某种原因,Person_with_telephonePerson 都有一个 m_telephone 成员。那会给你带来无尽的痛苦和困惑。如果他们都应该有这样的成员,请给他们不同的名字。

关于c++ - 代码不会继承,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com