C ++:派生类,"没有匹配的构造函数"错误

时间:2016-04-21 19:00:48

标签: c++ class derived-class

我已经做了一段时间的工作了。以下是说明:

  

您要设计一个名为Employee的抽象类,其成员是   如下所示(使它们受到保护):

     

数据成员:char * name,long int ID

     

两个构造函数:一个Default构造函数//将数据memebrs初始化为   默认值和复制构造函数

     

方法:setPerson(char * n,long int id)//允许用户设置   每个人的信息一个名为Print()//的函数应该是a   虚函数,用于打印类的数据属性。和a   析

     

还定义了两个派生自Employee类的类,称为   经理和秘书。每个类都应该继承来自的所有成员   基类,也有自己的数据成员和成员函数。   经理应该有一个名为学位的数据成员为他/她   本科学位(如文​​凭,学士,硕士,博士),   秘书应该有她的合同(可以是布尔值1/0 for   永久/暂时的)。

     

派生类的所有成员函数都应该被覆盖   基类。

     

编写以下main()来测试您的类

int main() {
Employee * p = new Manager(“Bruce Lee”, 0234567, “Dr.”);
P.print();
Secretary p2;
p2.setPerson(“Wilma Jones”, 0341256, “permanent”);
delete p;
p = & p2;
p.Print();
return 0;
}

这是我到目前为止所提出的所有内容,但我很确定它充满了错误,我的论点和变量类型都已关闭。

#include <iostream>
using namespace std;


class Employee{
protected:
    char *name;
    long int ID;
public:
    Employee();
    Employee(Employee&);
    void setPerson(char * n, long int eID) {
        name = n;
        ID = eID; };
    virtual void Print(){
        cout << "Name: " << name << endl;
        cout << "ID: " << ID << endl; };
};

class Manager: public Employee {
protected:
    char *degree;
public:
    void setPerson(char * n, long int eID, char * d){
        name = n;
        ID = eID;
        degree = d;
    };
    void Print() {
        cout << "Name: " << name << endl;
        cout << "ID: " << ID << endl;
        cout << "Degree: " << degree << endl;
    };
};

class Secretary: public Employee {
protected:
    bool contract;
public:
    void setPerson(char * n, long int eID, string c){
        name = n;
        ID = eID;
        if (c == "permanent") contract = true;
        else contract = false;
    };
    void Print(){
        cout << "Name: " << name << endl;
        cout << "ID: " << ID << endl;
        cout << "Contract: " << contract << endl;
    };
};

int main() {
    Employee * P = new Manager("Bruce Lee", 0234567, "Dr.");
    P.Print();
    Secretary P2;
    P2.setPerson("Wilma Jones", 0341256, "permanent");
    delete P;
    P = & P2;
    P.Print();
    return 0;
}

我在第62行(主代码的第一行)收到错误:

  

没有用于初始化Manager

的匹配构造函数

我尝试过阅读类似的问题,但他们对我帮助不大。我认为最令人困惑的是合约是bool值和使用char参数。任何指导都表示赞赏。

2 个答案:

答案 0 :(得分:2)

你得到的错误很简单:你没有Manager(或Employee)的任何构造函数,它接受一个字符串,整数(?)和字符串作为参数

答案 1 :(得分:0)

您已声明构造函数员工但未定义它。 查看班级员工,在publc下宣布

MemTotal:       256708 kB
MemFree:          4896 kB
Buffers:             0 kB
Cached:         181892 kB
SwapCached:          0 kB
Active:         178140 kB
Inactive:        46496 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       256708 kB
LowFree:          4896 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
Mapped:          56656 kB
Slab:            11252 kB
CommitLimit:    128352 kB
Committed_AS:   175668 kB
PageTables:        908 kB
VmallocTotal:   737280 kB
VmallocUsed:    113084 kB
VmallocChunk:   624100 kB

slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <batchcount> <limit> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
rwsem_lock_cache       0      0     64   59    1 : tunables  120   60    0 : slabdata      0      0      0
rwsem_owner_cache     16     59     64   59    1 : tunables  120   60    0 : slabdata      1      1      0
rwsem_sap_cache        0      0    128   30    1 : tunables  120   60    0 : slabdata      0      0      0
pss_node_cache         0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
mts-sapinfo-cache      0      0   1152    7    2 : tunables   24   12    0 : slabdata      0      0      0
mts-sap-desc-cache     34     36    448    9    1 : tunables   54   27    0 : slabdata      4      4      0
mts-qentry-cache       5     59     64   59    1 : tunables  120   60    0 : slabdata      1      1      0
mts-rcpnt-cache        1      1   5568    1    2 : tunables    8    4    0 : slabdata      1      1      0
rpc_buffers            8      8   2048    2    1 : tunables   24   12    0 : slabdata      4      4      0
rpc_tasks              8     24    160   24    1 : tunables  120   60    0 : slabdata      1      1      0
rpc_inode_cache        0      0    416    9    1 : tunables   54   27    0 : slabdata      0      0      0
unix_sock             70     70    384   10    1 : tunables   54   27    0 : slabdata      7      7      0
tcp_tw_bucket          0      0     96   40    1 : tunables  120   60    0 : slabdata      0      0      0
tcp_bind_bucket       25    203     16  203    1 : tunables  120   60    0 : slabdata      1      1      0
tcp_open_request       2     59     64   59    1 : tunables  120   60    0 : slabdata      1      1      0
inet_peer_cache        4     59     64   59    1 : tunables  120   60    0 : slabdata      1      1      0
ip_fib_alias          23    203     16  203    1 : tunables  120   60    0 : slabdata      1      1      0
ip_fib_hash           23    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
ip_dst_cache          34     45    256   15    1 : tunables  120   60    0 : slabdata      3      3      0
arp_cache             13     24    160   24    1 : tunables  120   60    0 : slabdata      1      1      0
raw_sock               8      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
udp_sock               7      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
tcp_sock              29     36   1024    4    1 : tunables   54   27    0 : slabdata      9      9      0
flow_cache             0      0     96   40    1 : tunables  120   60    0 : slabdata      0      0      0
cfq_ioc_pool           0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
cfq_pool               0      0    104   37    1 : tunables  120   60    0 : slabdata      0      0      0
crq_pool               0      0     52   72    1 : tunables  120   60    0 : slabdata      0      0      0
deadline_drq           0      0     48   78    1 : tunables  120   60    0 : slabdata      0      0      0
as_arq                 4     63     60   63    1 : tunables  120   60    0 : slabdata      1      1      0
mqueue_inode_cache      1      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
jffs2_inode_cache     24    145     24  145    1 : tunables  120   60    0 : slabdata      1      1      0
jffs2_node_frag    36493  36576     28  127    1 : tunables  120   60    0 : slabdata    288    288      0
jffs2_raw_node_ref  52018  52171     16  203    1 : tunables  120   60    0 : slabdata    257    257      0
jffs2_tmp_dnode        0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
jffs2_raw_inode        0      0     68   56    1 : tunables  120   60    0 : slabdata      0      0      0
jffs2_raw_dirent       0      0     40   92    1 : tunables  120   60    0 : slabdata      0      0      0
jffs2_full_dnode   36494  36540     16  203    1 : tunables  120   60    0 : slabdata    180    180      0
jffs2_i               13     24    328   12    1 : tunables   54   27    0 : slabdata      2      2      0
nfs_write_data        36     36    448    9    1 : tunables   54   27    0 : slabdata      4      4      0
nfs_read_data         32     36    448    9    1 : tunables   54   27    0 : slabdata      4      4      0
nfs_inode_cache        0      0    544    7    1 : tunables   54   27    0 : slabdata      0      0      0
nfs_page               0      0     64   59    1 : tunables  120   60    0 : slabdata      0      0      0
dnotify_cache          0      0     20  169    1 : tunables  120   60    0 : slabdata      0      0      0
kioctx                 0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
kiocb                  0      0    128   30    1 : tunables  120   60    0 : slabdata      0      0      0
fasync_cache           0      0     16  203    1 : tunables  120   60    0 : slabdata      0      0      0
shmem_inode_cache    169    170    384   10    1 : tunables   54   27    0 : slabdata     17     17      0
posix_timers_cache      0      0    100   39    1 : tunables  120   60    0 : slabdata      0      0      0
uid_cache              0      0     64   59    1 : tunables  120   60    0 : slabdata      0      0      0
blkdev_ioc             0      0     24  145    1 : tunables  120   60    0 : slabdata      0      0      0
blkdev_queue          25     30    368   10    1 : tunables   54   27    0 : slabdata      3      3      0
blkdev_requests        4     28    140   28    1 : tunables  120   60    0 : slabdata      1      1      0
biovec-(256)         256    256   3072    2    2 : tunables   24   12    0 : slabdata    128    128      0
biovec-128           256    260   1536    5    2 : tunables   24   12    0 : slabdata     52     52      0
biovec-64            256    260    768    5    1 : tunables   54   27    0 : slabdata     52     52      0
biovec-16            256    260    192   20    1 : tunables  120   60    0 : slabdata     13     13      0
biovec-4             256    295     64   59    1 : tunables  120   60    0 : slabdata      5      5      0
biovec-1             256    406     16  203    1 : tunables  120   60    0 : slabdata      2      2      0
bio                  256    295     64   59    1 : tunables  120   60    0 : slabdata      5      5      0
file_lock_cache       65     80     96   40    1 : tunables  120   60    0 : slabdata      2      2      0
sock_inode_cache     121    121    352   11    1 : tunables   54   27    0 : slabdata     11     11      0
skbuff_head_cache    560    560    192   20    1 : tunables  120   60    0 : slabdata     28     28      0
sock                   9     12    320   12    1 : tunables   54   27    0 : slabdata      1      1      0
proc_inode_cache    1196   1196    304   13    1 : tunables   54   27    0 : slabdata     92     92      0
sigqueue              26     26    148   26    1 : tunables  120   60    0 : slabdata      1      1      0
radix_tree_node     2030   2030    276   14    1 : tunables   54   27    0 : slabdata    145    145      0
bdev_cache             1      9    416    9    1 : tunables   54   27    0 : slabdata      1      1      0
mnt_cache             20     40     96   40    1 : tunables  120   60    0 : slabdata      1      1      0
inode_cache         2665   2665    288   13    1 : tunables   54   27    0 : slabdata    205    205      0
dentry_cache        4147   4147    136   29    1 : tunables  120   60    0 : slabdata    143    143      0
filp                1380   1440    160   24    1 : tunables  120   60    0 : slabdata     60     60      0
names_cache            4      4   4096    1    1 : tunables   24   12    0 : slabdata      4      4      0
idr_layer_cache       97    116    136   29    1 : tunables  120   60    0 : slabdata      4      4      0
buffer_head            0      0     48   78    1 : tunables  120   60    0 : slabdata      0      0      0
mm_struct             44     49    544    7    1 : tunables   54   27    0 : slabdata      7      7      0
vm_area_struct      3452   3680     84   46    1 : tunables  120   60    0 : slabdata     80     80      0
fs_cache              45    113     32  113    1 : tunables  120   60    0 : slabdata      1      1      0
files_cache           42     45    416    9    1 : tunables   54   27    0 : slabdata      5      5      0
signal_cache          57     60    256   15    1 : tunables  120   60    0 : slabdata      4      4      0
sighand_cache         55     60   1312    3    1 : tunables   24   12    0 : slabdata     20     20      0
task_struct           96    100    960    4    1 : tunables   54   27    0 : slabdata     25     25      0
anon_vma            1273   1356      8  339    1 : tunables  120   60    0 : slabdata      4      4      0
size-131072(DMA)       0      0 131072    1   32 : tunables    8    4    0 : slabdata      0      0      0
size-131072            1      1 131072    1   32 : tunables    8    4    0 : slabdata      1      1      0
size-65536(DMA)        0      0  65536    1   16 : tunables    8    4    0 : slabdata      0      0      0
size-65536             0      0  65536    1   16 : tunables    8    4    0 : slabdata      0      0      0
size-32768(DMA)        0      0  32768    1    8 : tunables    8    4    0 : slabdata      0      0      0
size-32768             1      1  32768    1    8 : tunables    8    4    0 : slabdata      1      1      0
size-16384(DMA)        0      0  16384    1    4 : tunables    8    4    0 : slabdata      0      0      0
size-16384             8      8  16384    1    4 : tunables    8    4    0 : slabdata      8      8      0
size-8192(DMA)         0      0   8192    1    2 : tunables    8    4    0 : slabdata      0      0      0
size-8192              3      3   8192    1    2 : tunables    8    4    0 : slabdata      3      3      0
size-4096(DMA)         0      0   4096    1    1 : tunables   24   12    0 : slabdata      0      0      0
size-4096            278    278   4096    1    1 : tunables   24   12    0 : slabdata    278    278      0
size-2048(DMA)         0      0   2048    2    1 : tunables   24   12    0 : slabdata      0      0      0
size-2048            292    292   2048    2    1 : tunables   24   12    0 : slabdata    146    146      0
size-1024(DMA)         0      0   1024    4    1 : tunables   54   27    0 : slabdata      0      0      0
size-1024             60     60   1024    4    1 : tunables   54   27    0 : slabdata     15     15      0
size-512(DMA)          0      0    512    8    1 : tunables   54   27    0 : slabdata      0      0      0
size-512             216    216    512    8    1 : tunables   54   27    0 : slabdata     27     27      0
size-256(DMA)          0      0    256   15    1 : tunables  120   60    0 : slabdata      0      0      0
size-256              76     90    256   15    1 : tunables  120   60    0 : slabdata      6      6      0
size-192(DMA)          0      0    192   20    1 : tunables  120   60    0 : slabdata      0      0      0
size-192             139    140    192   20    1 : tunables  120   60    0 : slabdata      7      7      0
size-128(DMA)          0      0    128   30    1 : tunables  120   60    0 : slabdata      0      0      0
size-128             857    870    128   30    1 : tunables  120   60    0 : slabdata     29     29      0
size-96(DMA)           0      0     96   40    1 : tunables  120   60    0 : slabdata      0      0      0
size-96             1049   1080     96   40    1 : tunables  120   60    0 : slabdata     27     27      0
size-64(DMA)           0      0     64   59    1 : tunables  120   60    0 : slabdata      0      0      0
size-64             4425   4425     64   59    1 : tunables  120   60    0 : slabdata     75     75      0
size-32(DMA)           0      0     32  113    1 : tunables  120   60    0 : slabdata      0      0      0
size-32             4633   4633     32  113    1 : tunables  120   60    0 : slabdata     41     41      0
kmem_cache           120    120    128   30    1 : tunables  120   60    0 : slabdata      4      4      0

但是你还没有定义这个功能。你需要

Employee();
Employee(Employee&);

另一个用于另一个签名。