【发布时间】:2017-10-20 03:28:02
【问题描述】:
我必须做什么?
我在创建两个集合(一个用于字符串字母,一个用于 int 数字)中创建一个基类,并在派生类(继承)中创建一个新集合(字符串名称),我想将它们组合在参数化构造函数中。
任何帮助都非常感谢,谢谢大家:)
这是我的代码示例:(在参数化构造函数中显示错误不起作用)
#include <iostream>
#include <string.h>
using namespace std;
class Code
{
protected:
string letter;
int number;
public:
string getletter();
int getnumber();
void setletter(string letter1);
void setnumber(int number1);
};
void Code::setletter(string letter1)
{
letter=letter1;
}
void Code::setnumber(int number1)
{
number=number1;
}
string Code::getletter()
{
return letter;
}
int Code::getnumber()
{
return number;
}
class Course : public Code
{
private:
string name;
public:
Course(string name1, string letter1, int number1);
string getname();
void show();
};
Course::Course (string name1, string letter1,int number1) :
setletter(letter1), setnumber(number1) //Parameterized Constructor
{
name=name1;
letter=letter1;
number=number1;
}
string Course::getname()
{
return name;
}
void show()
{
Course com("Object oriented programming","com",210);
cout<<"Constructor >>>\n Course Name : "<< com.getname()<<"\n Course Code : "<< com.getletter() << com.getnumber()<<endl;
}
int main()
{
show();
}
【问题讨论】:
-
:之后不能调用函数,只能初始化成员变量。将这些调用放入函数体中。 -
简单的方法?向
Code添加一个构造函数,该构造函数设置Code的成员,并使用传递给Course构造函数的参数调用Course构造函数的成员初始化器列表中的新构造函数。 -
不管怎样,你对
setletter(letter1)和letter=letter1;不也是这样吗??? -
请不要使用不会在公共成员变量上添加任何内容的 getter/setter 函数。指责 java 人认为这是一种有用的技术。
标签: c++ class inheritance visual-c++ constructor