Code Error: "Is not a nonstatic data member or base class of"

Code Error: "Is not a nonstatic data member or base class of"

我在 C++ 中有三个 类:项目、主管、日期。我正在尝试使用组合,但我遇到以下错误消息的错误:

"Class Date

"Date" is not a nonstatic data member or base class of class "Project"". 

这个错误发生在这一行,在Project.cpp:

Project::Project(char projectName, int sDay, int sMonth, int sYear, char supervisorName)
    : Date(sDay, sMonth, sYear), 
    : Supervisor(supervisorName)

完整代码:

Date.h:

#pragma once

class Date
{
public:
    Date(int = 1, int = 1, int = 1);
    void setDate(int, int, int);
    void setDay(int);
    void setMonth(int);
    void setYear(int);
    ~Date();
private:
    int day, month, year;
};

Date.cpp

#include "stdafx.h"
#include "Date.h"

Date::Date(int a, int b, int c)
{
    setDate(a, b, c);
}

void Date::setDate(int d, int m, int y)
{
    setDay(d);
    setMonth(m);
    setYear(y);
}

void Date::setDay(int da)
{
    day = da;
}

void Date::setMonth(int mo)
{
    month = mo;
}

void Date::setYear(int ye)
{
    year = ye;
}

Date::~Date()
{
}

Supervisor.h:

#pragma once

class Supervisor
{
public:
    Supervisor(char);
    ~Supervisor();
private:
    char name;
};

Supervisor.cpp:

#include "stdafx.h"
#include "Supervisor.h"


Supervisor::Supervisor(char n)
{
    name = n;
}

Supervisor::~Supervisor()
{
}

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()
{
}

该错误消息不言自明,您使用的语法是将参数传递给 class 的基 class 的构造函数,但您使用的 class 名称不是当前 class.

的基础 classes

要初始化 class 成员,请使用成员的名称而不是其 class:

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