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);
}
我在 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);
}