c++不可访问是怎么回事

main.cpp

#include "head.h"
#include "include.h"

int main() {
    cout << "加载中";
    SystemFunctions::wait(1);
    cout << endl;
    return 0;
}

head.h


#include "include.h"
class SystemFunctions
{
    void wait(unsigned long WaitTime)
    {
        WaitTime = WaitTime * 1000;
        Sleep(WaitTime);
        cout << ". ";
        Sleep(WaitTime);
        cout << ". ";
        Sleep(WaitTime);
        cout << "." << endl;
    }
};

include.h

#pragma once

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <string>
#include <cstdlib>
#include <windows.h>
using namespace std;

错误:严重性 代码 说明 项目 文件 行 源 禁止显示状态 工具
错误(活动) E0265 函数 "SystemFunctions::wait" (已声明 所在行数:4,所属文件:"D:\cpp\abc\abc\head.h") 不可访问 abc D:\cpp\abc\abc\main.cpp 22 IntelliSense Visual C++ IntelliSense
严重性 代码 说明 项目 文件 行 源 禁止显示状态 工具
错误(活动) E0245 非静态成员引用必须与特定对象相对 abc D:\cpp\abc\abc\main.cpp 22 IntelliSense Visual C++ IntelliSense

void wait(unsigned long WaitTime)
->
public: void wait(unsigned long WaitTime)

1.class默认是private
2.你这个wait不是静态函数,需要先创建一个对象
你为什么用class?你想用namespace吧?

【以下回答由 GPT 生成】

这个错误是因为在head.h文件中的wait函数被声明为了私有成员函数,无法在main函数中进行访问。修复这个问题可以通过将wait函数声明为公共成员函数,具体步骤如下:

  1. head.h文件中将wait函数的访问权限修改为公共(public)。
  2. head.h文件中添加头文件<iostream><windows.h>,以便使用coutSleep函数。

修改后的head.h文件如下:

#include "include.h"
#include <iostream>
#include <windows.h>

class SystemFunctions
{
public:
    void wait(unsigned long WaitTime)
    {
        WaitTime = WaitTime * 1000;
        Sleep(WaitTime);
        std::cout << ". ";
        Sleep(WaitTime);
        std::cout << ". ";
        Sleep(WaitTime);
        std::cout << "." << std::endl;
    }
};

然后重新编译代码,该错误应该会被解决。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^