如何在C+中访问类方法+;功能 我正在编写一个SIMLPE C++程序,它使用CTIMORE库显示当前日期,并要求用户输入任何一年,将其与当前的一年进行比较。之后,它会显示“有效”(如果输入年份小于当前年份)或“无效”(如果输入年份大于当前年份)。 但是我有一个问题,我自己解决不了。每次出现错误时:无法调用没有对象的成员函数。 代码如下: main.cpp #包括 #包括“header.h” 使用名称空间std; 失效日期(); int main() { 头aCl; aCl.设定年份(2010年) 国际年; cin>>年; aCl.isValid() }

如何在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)

函数.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)
        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;
}