C++ 类成员调用错误 C3861
c++ class member call error C3861
我有点不知所措。我知道我错过了一些东西,但我没有看到它。 我收到错误 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;
}
如果有任何错误,请告诉我
相关文章:
- C++ 类成员调用错误 C3861
- 我遇到:错误2错误C3861:"fx":找不到标识符
- 编译错误C3861 Visual Studio 2010
- 错误 C3861:"strcpy_y":找不到标识符
- 错误 C3861:"initNode":找不到标识符
- 错误 C3861:"getGaborKernel":找不到标识符
- 错误 C3861:"对齐":找不到标识符
- 错误错误 C3861:"cvPyrSegmentation":找不到标识符
- 错误 C3861:"_crt_va_end":找不到标识符
- 错误 C3861:"roundf":找不到标识符
- 错误 C3861:"ResGain":找不到标识符
- 错误 C3861:"_beginthreadex":找不到标识符
- CUDA / C++:错误C3861:"uint2float":找不到标识符
- 错误 4 错误 C3861:"snprintf":找不到标识符
- 错误 C3861:"系统":找不到标识符
- mystackwalker.cxx(29):错误 C3861:"捕获堆栈回跟踪":找不到标识符
- 错误 C3861:"glewGetContext":找不到标识符
- 如何摆脱错误C3861:
- 错误 C3861:"rollDice":找不到标识符
- 错误 C3861:"getLine":找不到标识符