尝试访问头函数中的私有 class 变量
Trying to access private class variables in header function
我需要头文件中的几个函数使用 std::cout
来表示日期,但我不知道如何从头文件访问它们。如果我在 class 之内,我可以这样说:
void DisplayStandard()
{
cout << month << "/" << day << "/" << year << endl;
}
但是,由于我正在访问月、日和年(它们在我的 .cpp 文件中是私有的),所以我不确定如何通过实现文件中的无效函数修改它们。这是所有代码:
dateclasses.h
#ifndef DATECLASS_H
#define DATECLASS_H
class dateclass
{
private:
int month;
int day;
int year;
public:
//default constructor
dateclass()
{
month = 1;
day = 1;
year = 1;
}
//value constructor
dateclass(int month, int day, int year)
{
this->month = month;
this->day = day;
this->year = year;
}
void DisplayStandard();
};
#endif
dateclasses.cpp
#include "dateclass.h"
#include <iostream>
using namespace std;
void DisplayStandard()
{
cout << "Date: " << month << "/" << day << "/" << year << endl;
}
我还没有设置主要功能,虽然我认为没有必要
您可以解决这个问题,方法是将void DisplayStandard()
更改为void dateclass::DisplayStandard()
,如下所示
void dateclass::DisplayStandard()//note the dateclass:: added infront of DisplayStandard
{
cout << "Date: " << month << "/" << day << "/" << year << endl;
}
我需要头文件中的几个函数使用 std::cout
来表示日期,但我不知道如何从头文件访问它们。如果我在 class 之内,我可以这样说:
void DisplayStandard()
{
cout << month << "/" << day << "/" << year << endl;
}
但是,由于我正在访问月、日和年(它们在我的 .cpp 文件中是私有的),所以我不确定如何通过实现文件中的无效函数修改它们。这是所有代码:
dateclasses.h
#ifndef DATECLASS_H
#define DATECLASS_H
class dateclass
{
private:
int month;
int day;
int year;
public:
//default constructor
dateclass()
{
month = 1;
day = 1;
year = 1;
}
//value constructor
dateclass(int month, int day, int year)
{
this->month = month;
this->day = day;
this->year = year;
}
void DisplayStandard();
};
#endif
dateclasses.cpp
#include "dateclass.h"
#include <iostream>
using namespace std;
void DisplayStandard()
{
cout << "Date: " << month << "/" << day << "/" << year << endl;
}
我还没有设置主要功能,虽然我认为没有必要
您可以解决这个问题,方法是将void DisplayStandard()
更改为void dateclass::DisplayStandard()
,如下所示
void dateclass::DisplayStandard()//note the dateclass:: added infront of DisplayStandard
{
cout << "Date: " << month << "/" << day << "/" << year << endl;
}