类构造方法-没有构造方法的实例

时间:2018-08-10 11:47:14

标签: c++ class

我正在学习使用构图。将Project类作为数据成员的Student类。错误与以下代码有关:Student.cpp中的sproject(p)。

错误消息:

char p

no instance of constructor "Project::Project" matched the argument list

Student.h:

#pragma once
#include "Project.h"
#include "Date.h"

class Student
{
public:
    Student(int, char, int, int, int, char);
    void setStudent(int, char, int, int, int, char);
    ~Student();
private:
    int ID;
    char name;
    Date DOB;
    Project sproject;
};

Student.cpp:

#include "stdafx.h"
#include "Student.h"
#include "Date.h"
#include "Project.h"

Student::Student(int i, char s, int d, int m, int y, char p)
    : DOB(d, m, y), 
    sproject(p)
{
    setStudent(i, s, d, m, y, p);
}

void Student::setStudent(int number, char stN, int da, int mo, int ye, char pr)
{
    ID = number;
    name = stN;
    DOB = (da, mo, ye);
    sproject = pr;


}

Student::~Student()
{
}

Project.h:

#pragma once
#include "Supervisor.h"
#include "Date.h"

class Project
{
public:
    Project(char, int, int, int, char);
    void setProject(char, int, int, int, char);
    ~Project();
private:
    char pname;
    Date startDate;
    Supervisor supervisor;
};

Project.cpp:

#include "stdafx.h"
#include "Project.h"
#include "Supervisor.h"
#include "Date.h"

Project::Project(char projectName, int sDay, int sMonth, int sYear, char supervisorName)
    : Date(sDay, sMonth, sYear), 
    : Supervisor(supervisorName)
{
    setProject(projectName, sDay, sMonth, sYear, supervisorName);
}

void Project::setProject(char pN, int d, int m, int y, char sN)
{
    pname = pN;
    startDate = (d, m, y);
    supervisor = sN;
}

Project::~Project()
{
}

我不明白此错误消息。有什么想法我做错了吗?

3 个答案:

答案 0 :(得分:5)

您的学生有一个成员变量

Project sproject;

您正在尝试使用

构造它
sproject(p)   // where p is a char

因此,它正在寻找带有签名的构造函数

Project(char)

但显然不存在,您只有带有此签名的构造函数

Project(char, int, int, int, char);

答案 1 :(得分:1)

您的project.h文件仅为Project类定义一个构造函数,并且该构造函数需要五个参数(char, int, int, int, char)

出现错误的行似乎正在尝试调用仅接受一个参数(char)的构造函数。

答案 2 :(得分:1)

您的Project构造函数使用一个char,3个整数和一个char。在构造Student时,您只将一个char传递给您的项目:)构造时必须满足所有参数