我正在学习使用构图。将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()
{
}
我不明白此错误消息。有什么想法我做错了吗?
答案 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传递给您的项目:)构造时必须满足所有参数