C++ 类成员调用错误 C3861

c++ class member call error C3861

本文关键字:错误 C3861 调用 成员 C++      更新时间:2023-10-16

我有点不知所措。我知道我错过了一些东西,但我没有看到它。 我收到错误 C3861 引用未识别的类成员函数。我正在浏览类似问题的其他答案,其中大多数与原型问题和呼叫顺序有关。 所以,我想知道我在哪里搞砸了。 我知道我应该看到它,但这个周末我正在治疗睡眠严重不足。

main.cpp:
#include "Date.h"
int main()
{
int day = 1;
int month = 1;
int year = 2000;
int addedDays;
displayDate(day, month, year);
cout << "Enter how many days you would like to add:  ";
cin >> addedDays;
cout << endl;
setDate(day, month, year);
addDays(day, month, year, addedDays);
displayDate(day, month, year);
return 0;}
//====================================
Date.cpp
#include "Date.h"
Date::Date(){}
Date::Date(int day, int month, int year) 
{
this->day = day;
this->month = month;
this->year = year;
}
Date::~Date() {}
void Date::setDate(int day, int month, int year)
{
this->day = day;
this->month = month;
this->year = year;
}
void Date::addDays(int day, int month, int year, int addedDays)
{
day = day + addedDays;
while (day > 30)        //Test if day function needs to be cycled.
{
month++;
day = day - 30;
if(month>12)        //Test if month function needs to be cycled.
{
year++;
month = month - 12;
}
}
}
void Date::displayDate(int day, int month, int year)
{
cout << "The current date is:  " << day << ", " << month << ", " << year << endl;
}
//======================================
Date.h:
#include "stdafx.h"
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date();
Date(int day, int month, int year);
~Date();
void setDate(int day, int month, int year);
void addDays(int day, int month, int year, int addedDays);
void displayDate(int day, int month, int year);
};

您有一个类,但是您不会创建用于使用这些函数的 Date 对象。必须使用 date 对象才能使用这些函数。

在您的主要功能中:

int main()
{
int day = 1;
int month = 1;
int year = 2000;
int addedDays;
Date today(day, month, year);
today.displayDate(day, month, year);
cout << "Enter how many days you would like to add:  ";
cin >> addedDays;
cout << endl;
today.addDays(day, month, year, addedDays);
today.displayDate(day, month, year);
return 0;
}

请注意,您的addDays()功能无法正常工作。您可以通过将日期转换为日期,添加然后转换回来来实现此处的方法。

头文件

#include "stdafx.h"
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date();
Date(int day, int month, int year);
~Date();
void setDate(int day, int month, int year);
// don't need day, month, year since they are accessible in the class
void addDays(int addedDays); 
void displayDate();
};

实现文件

#include "Date.h"
// if no day, month, year specified when object is created, set each of them to 1
Date::Date() : day(1), month(1), year(1) 
{}
Date::Date(int day, int month, int year) 
{
this->day = day;
this->month = month;
this->year = year;
}
Date::~Date() 
{}
void Date::setDate(int day, int month, int year)
{
this->day = day;
this->month = month;
this->year = year;
}
void Date::addDays(int addedDays)
{
this->day = this->day + addedDays;  // or could do day += addedDays
if(this->day > 30)            //Test if day function needs to be cycled.
{
this->month++;
this->day = 1;
if(this->month>12)        //Test if month function needs to be cycled.
{
this->year++;
this->month = 1;
}
}
}
void Date::displayDate()
{
cout << "The current date is:  " << this->day << ", " << this->month << ", "<<      this->year << endl;
}

主 cpp 文件

#include <iostream>
#include "Date.h"
int main()
{
int day = 1;
int month = 1;
int year = 2000;
int addedDays = 0;
// declare a date object
Date date(day, month, year); 
// call the displayDate function using the date object
date.displayDate(); 
std::cout << "Enter how many days you would like to add:  ";
std::cin >> addedDays;
std::cout << endl;
// add the days by calling the addDays function through the date object
date.addDays(addedDays);
date.displayDate();
return 0;
}

如果有任何错误,请告诉我