我有
// 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;
}
我在BoardInitializer::testBoardInitialize
中实施了mh.cpp
。
但我收到错误“功能无法访问”。怎么了?
答案 0 :(得分:8)
类具有隐式private
访问权限,您需要在方法之前添加显式public:
语句。另外,它是一种静态方法,需要使用::
运算符来解决。
答案 1 :(得分:7)
C ++中class
的默认保护级别为private
(带有
其他人是public
和protected
)。这意味着你所有的
成员和您的成员函数是私有的,只能通过
该类或朋友的其他成员函数(函数或类)
那个班。
函数main不是,你最终得到了错误。
C ++提供了一个方便的快捷方式(或C传统cruft,取决于你的
worldview)名为struct
,其默认保护级别为
public
。
class my_class {
public:
int my_int;
};
或
struct my_struct {
int my_int;
};
应该显示差异。
答案 2 :(得分:3)
默认情况下,类元素是私有的。写下这个:
class BoardInitializer
{
public:
static int *beginBoard;
static int *testBoard;
static void testBoardInitialize();
};
默认情况下,struct元素是公共的。写下这个:
struct BoardInitializer
{
static int *beginBoard;
static int *testBoard;
static void testBoardInitialize();
};
必须使用::
运算符访问静态类元素。
答案 3 :(得分:2)
您忘记通过在课程定义的开头添加public:
来公开此功能。
答案 4 :(得分:2)
默认情况下,类属性是私有的。你必须将public:添加到你的班级。
答案 5 :(得分:1)
正如大家所指出的,班级成员默认为SharedPreferences prefs = SharedPreferenceManager.getDefaultSharedPreferences(this);
int myValue = prefs.getInt("my value");
。
如果您想让它可访问,只需将它们private
。
如果您仍想保护/摘要/隐藏您的数据成员(此处为public
和*beginBoard
),请将功能testBoard
设为:
public
答案 6 :(得分:0)
另一种可能性(对于那些将来来这里的人)是你在继承时忘记了public
关键字。也就是说,你应该有class Base: public Derived
。