功能无法访问

Mas*_*oud 3 c++

我有

// file BoardInitializer.h
#include <stdio.h>
#include <tchar.h>
#include <string>
#include <iostream>

using namespace std;
class BoardInitializer
{
    static int *beginBoard;
    static int *testBoard;
    static void testBoardInitialize();
}



// file mh.cpp
#include "BoardInitializer.h"

int main(int argc, char* argv[])
{
    BoardInitializer.testBoardInitialize();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我实施BoardInitializer::testBoardInitializemh.cpp.但我收到错误"功能无法访问".怎么了?

Mar*_*mer 8

类具有隐式private访问权限,您需要public:在方法之前添加显式语句.另外,它是一种静态方法,需要使用::运算符来解决.


pmr*_*pmr 7

classC++中的默认保护级别是private(其他人是publicprotected).这意味着您的所有成员和您的成员函数都是私有的,只能由该类的其他成员函数或该类的朋友(函数或类)访问.

函数main既不是,你最终得到错误.

C++提供了一个方便的快捷方式(或C传统残余,取决于您的世界观)struct,默认保护级别为 public.

class my_class {
public:
  int my_int;      
};
Run Code Online (Sandbox Code Playgroud)

要么

struct my_struct {
  int my_int;
};
Run Code Online (Sandbox Code Playgroud)

应该显示出差异.


han*_*aad 5

类元素默认是私有的。写下这个:

class BoardInitializer
{
public:
    static int *beginBoard;
    static int *testBoard;
    static void testBoardInitialize();
};
Run Code Online (Sandbox Code Playgroud)

默认情况下,结构元素是公共的。写下这个:

struct BoardInitializer
{
    static int *beginBoard;
    static int *testBoard;
    static void testBoardInitialize();
};
Run Code Online (Sandbox Code Playgroud)

静态类元素必须使用运算符访问::