我有
// 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::testBoardInitialize了mh.cpp.但我收到错误"功能无法访问".怎么了?
classC++中的默认保护级别是private(其他人是public和protected).这意味着您的所有成员和您的成员函数都是私有的,只能由该类的其他成员函数或该类的朋友(函数或类)访问.
函数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)
应该显示出差异.
类元素默认是私有的。写下这个:
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)
静态类元素必须使用运算符访问::。