Inconsistent Accessibility
강의 한번 듣고 처음부터 다시 복습 중인데요
이전에도 한 강 들을 때마다 몇번씩 다시 복습 하고 그래서
왜 이런지 도통 이해가 가질 않습니다
현재 단계는 Player 클래스 생성하고, 프로퍼티 및 Initialize 함수 생성하고, 그에 맞춰 Program 및 Board 클래스에 수정을 가하는 부분입니다
문제는 이전에는 한번에도 그러지 않다가 Board 클래스의 Initialize 함수에 파라미터로 Player를 넣을때 Inconsistent Accesibility 오류가 생깁니다
해당 함수의 Accesibility보다 Player 클래스의 Accesiblity가 낮아서 생기는 걸로 보이기에 Player 클래스 앞에 Public을 추가하면 해결을 됩니다만 제가 몇번이고 복습한 내역에서도 강의에서도 이 부분에 Public을 추가 하신적은 없었습니다
어떻게 된건지 알려주세요
namespace MMO2_CompleteReview
{
public class Board
{
const char CIRCLE = '\u25cf';
public int Size { get; private set; }
public TileType[,] Tile { get; private set; }
Player _player;
public enum TileType
{
Empty,
Wall
}
public void Initialize(int size, Player player)
{
if (size % 2 == 0)
return;
Size = size;
_player = player;
Tile = new TileType[Size, Size];
//GenerateBinaryTree();
GenerateSideWinder();
}
namespace MMO2_CompleteReview
{
class Player
{
public int PosY { get; private set; }
public int PosX { get; private set; }
Random random = new Random();
Board _board;
public void Initialize(int posY, int posX, int destY, int destX, Board board)
{
PosY = posY;
PosX = posX;
_board = board;
}
}
}
답변 2
5
class는 public, internal, private 이렇게 3가지의 접근 한정자를 붙일 수가 있는데
<- 이 제일 개방적, -> 이 제일 보수적 이라고 보시면 됩니다.
(public : 누구나, internal : 내부적으로, private : 나만)
기본적으로 아무것도 붙이지 않으면 internal입니다.
internal은 동일한 assembly 내에서 사용 가능하다(= 같은 namespace 안에서 사용 가능)는 의미인데
강의 예제 코드에서는 class에 접근 한정자를 붙이지 않기 때문에
Program, Board, Player 모두 internal입니다.
이렇게 접근 레벨이 다 동일하니 별다른 문제가 발생하지 않는 것입니다.
작성하신 예제에서는 Board에 public을 붙여주셨는데,
Board는 [누구나 사용 가능]이고 Player는 [내부적으로만 사용 가능]인 상태에서,
Board 내부적으로 Player를 사용한다는 접근 레벨 모순이 생기게 됩니다.
따라서 Board도 public을 떼고 internal로 놔두거나,
Player한테도 public을 붙여줘서
보안 레벨을 맞춰줘야 해당 문제가 사라지게 됩니다.
다음 문서를 읽어보면 도움이 됩니다!
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers#:~:text=Internal%20is%20the%20default%20if,%2C%20private%20protected%20%2C%20or%20private%20.
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
170
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
87
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
113
1
BFS 질문
0
143
2
격자 무한 출력
0
166
2
A* 의 PriorityQueue 관련 질문입니다
0
155
2
vscode에서 원그리기
0
179
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
86
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
141
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
142
1
창은 뜨는데 맵이 나타나지 않아요.
0
174
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
228
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
308
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
243
2
맵 만들기 오류
0
178
1





