如何在C+中访问类方法+;功能 我正在编写一个SIMLPE C++程序,它使用CTIMORE库显示当前日期,并要求用户输入任何一年,将其与当前的一年进行比较。之后,它会显示“有效”(如果输入年份小于当前年份)或“无效”(如果输入年份大于当前年份)。 但是我有一个问题,我自己解决不了。每次出现错误时:无法调用没有对象的成员函数。 代码如下: main.cpp #包括 #包括“header.h” 使用名称空间std; 失效日期(); int main() { 头aCl; aCl.设定年份(2010年) 国际年; cin>>年; aCl.isValid() }
函数.cpp如何在C+中访问类方法+;功能 我正在编写一个SIMLPE C++程序,它使用CTIMORE库显示当前日期,并要求用户输入任何一年,将其与当前的一年进行比较。之后,它会显示“有效”(如果输入年份小于当前年份)或“无效”(如果输入年份大于当前年份)。 但是我有一个问题,我自己解决不了。每次出现错误时:无法调用没有对象的成员函数。 代码如下: main.cpp #包括 #包括“header.h” 使用名称空间std; 失效日期(); int main() { 头aCl; aCl.设定年份(2010年) 国际年; cin>>年; aCl.isValid() },c++,C++,函数.cpp #include <ctime> #include <iostream> #include <string.h> #include "header.h" using namespace std; void Header::setYear(int val){ year = val; } void Header::isValid(int &passed) { if (passed > Header::year)
#include <ctime>
#include <iostream>
#include <string.h>
#include "header.h"
using namespace std;
void Header::setYear(int val){
year = val;
}
void Header::isValid(int &passed)
{
if (passed > Header::year)
cout << "Valid" << endl;
else
cout <<"Invalid!" << endl;
}
void date(){
time_t t = time(0);
struct tm *now = localtime(&t);
int currYear = now->tm_year + 1900; // Year is # years since 1900
cout << "Current date is " << currYear << endl;
Header::isValid(currYear);
}
#包括
#包括
#包括
#包括“header.h”
使用名称空间std;
无效标题::设置年份(int val){
年份=val;
}
无效标题::isValid(int和passed)
{
如果(通过>标题::年份)
库特
应该是:
aCl.isValid(year);
及
void头::isValid(int&passed)
{
如果(通过>标题::年份)
请编辑您的问题,指出错误发生在哪一行,另外,isValid
接受一个您未传递的参数,您也在使用作用域运算符访问isValid
:
,但它不是静态方法,因此这也是无效的date()
是调用isValid>的非成员函数()
这是一个成员函数,没有Header
的实例。您的Header
类介于两种可能的工作方式之间。每个Header
应该有一个年
?还是应该只有一个年
?是设置年
应该在单个Heade上运行r
并设置其年份?或者应该为所有标题设置唯一的年份?如果有两个标题
s,它们是否可以有不同的年份?标题::isValid(currYear);
不正确。只能这样调用静态方法。
#ifndef HEADER_H
#define HEADER_H
#include <iostream>
#include <string.h>
using namespace std;
class Header {
public:
int year;
void setYear(int val);
void isValid(int &passed);
};
#endif
aCl.isValid()
aCl.isValid(year);
void Header::isValid(int &passed)
{
if (passed > Header::year)
cout << "Valid" << endl;
else
cout <<"Invalid!" << endl;
}
void Header::isValid(int &passed)
{
if (passed > year)
cout << "Valid" << endl;
else
cout <<"Invalid!" << endl;
}