오류, 버그, 질문 - 페이지 2721

 
Koldun Zloy :

비논리적. 변경하지 않으려면 이것이 const를 만들 필요가 있음을 의미하지는 않습니다. 변수를 private로 만드는 것으로 충분합니다.

이것 덕분에 무언가를 얻는다면 논리적일 것입니다. 그러나 당신은 당신 자신에게만 문제 를 일으켰습니다.

const는 추가 컨트롤입니다. 그렇지 않으면 이 지시문을 언어에 전혀 도입하지 않을 수 있습니다.


public const 필드는 읽을 수 있는 DIRECTLY(참조로 전달될 수 있음)이기 때문에 좋습니다. 그러나 잘못된 변경은 제외됩니다.


const는 프로그램을 작성할 때 많은 도움이 됩니다. 문제가 발생한 것은 이번이 처음입니다.


위협 this 및 ::의 사용은 작성되지 않은 경우에도 도움이 됩니다.

 
fxsaber :

const는 추가 컨트롤입니다. 그렇지 않으면 이 지시문을 언어에 전혀 도입하지 않을 수 있습니다.


public const 필드는 읽을 수 있는 DIRECTLY(참조로 전달될 수 있음)이기 때문에 좋습니다. 그러나 잘못된 변경은 제외됩니다.


const는 프로그램을 작성할 때 많은 도움이 됩니다. 문제가 발생한 것은 이번이 처음입니다.


위협 this 및 ::의 사용은 작성되지 않은 경우에도 도움이 됩니다.

변수를 비공개로 설정합니다. 기능을 사용하여 읽습니다. 참조로 const int를 전달할 필요가 없습니다.

 
Koldun Zloy :

변수를 비공개로 설정합니다. 기능을 사용하여 읽습니다. 참조로 const int를 전달할 필요가 없습니다.

당신은 const가 단순히 무시된다고 제안하고 있습니다.

 
fxsaber :

당신은 const가 단순히 무시된다고 제안하고 있습니다.

아니요. 그러나 이 특별한 경우에는 필요하지 않습니다.

 
젠장, 갑자기 문제가 생겼습니다. " 쥐들이 울면서 스스로를 찔렀지만 계속해서 선인장을 갉아먹었다."
 
fxsaber :

일반적으로 실험을 통해 무엇을 말하든 모든 솔루션에는 "결함"이 있을 것입니다.

구조 필드에 대한 실행 속도와 액세스 제어에 대해 이야기하는 경우 추악한 솔루션을 작성할 수 있지만 작업을 수행하는

나는 일반적으로 구조에서 정적 메서드 를 거부합니다. 단순히 의미가 없으며 코드는 여전히 혼란스럽고 논리적이지 않습니다.

다음과 같이 보입니다.

 int tmp[] = { 1 , 2 , 3 , 99 };
struct A
{
private :
   static int count;
public :
   const int a;
   A():a(tmp[count++]) {}
};
static int A::count = 0 ;
//+------------------------------------------------------------------+
void OnStart ()
{
   A a[ ArraySize (tmp)];
   for ( int i= 0 ;i< ArraySize (a);i++) Print (a[i].a);
}


.... 카운트 카운터도 필요하지 않습니다. 실제로 A a[ArraySize(tmp)]를 래핑해야 합니다. 구조 배열을 만들고 임시 배열 tmp를 제거하는 매크로 대체로

 

같은 파일에 동시에 두 개의 프로그램이 실행되고 있습니다. 쓰는 것은 FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 플래그 를 사용합니다. 읽는 것은 FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ입니다. 첫 번째 프로그램은 FileFlush를 사용하여 주기적으로 파일을 저장하지만 두 번째 프로그램은 파일을 열 때만 파일의 길이를 봅니다. FileSeek를 앞뒤로 시도했지만 도움이되지 않습니다.

질문: 파일을 읽는 프로그램이 기록 중인 데이터를 선택하도록 하는 방법은 무엇입니까?

 

나는 요약할 것이다:

 struct A {
     const int a; 
    A() {}
};
void OnStart ()
{
            A a1; //(1) нормально
     const int a2; //(2) Error: 'a2' - 'const' variable must be initialized
}

1과 2의 차이점은 무엇입니까?

 
A100 :

나는 요약할 것이다:

1과 2의 차이점은 무엇입니까?

이 경우를 초기화하기 위한 내장 메커니즘이 있기를 바랐지만 아무 것도 없습니다.

 struct A {
     const int a[ 10 ]; 
    A() { ArrayPrint (a);} //-396985669       32758 -1490812928       32757  2147360768           0 -1681390008         493           0           0

};
//+------------------------------------------------------------------+
void OnStart ()
{
  A a1;
}
//+------------------------------------------------------------------+

추신: 여기 컴파일러가 봅니다.

 void f()
{
   const int x;   //'x' - 'const' variable must be initialized
}
 
Igor Makanu :

이 경우를 초기화하기 위한 내장 메커니즘이 있기를 바랐지만 아무 것도 없습니다.

추신: 여기 컴파일러가 봅니다.

원칙적으로 그런 경우는 없어야 합니다. 문제는 컴파일러 수준(C ++에서와 같이)에서 해결되어야 합니다. 그리고 여기에서 가능한 것처럼 보이며 결과적으로 여러 페이지에 대한 토론이