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

 
Stanislav Korotky :

무례하지 마십시오. 당신 자신이 처음으로 비정상적인 말을 시작했습니다.

With ++에서 컴파일에 대해 묻는 사람들은? 저에게는 일반적인 비즈니스 질문인 것 같습니다.
 
Andrey Barinov :
참고로 두 예제가 모두 C++로 명확하게 번역된 경우 C++에서 두 경우 모두 오류가 발생합니다. 첫 번째 경우의 MQL은 컴파일 프로세스(언어 자체가 아님)가 다르기 때문에 오류를 발생시키지 않습니다.
 
A100 :
With ++에서 컴파일에 대해 묻는 사람들은?

이 두 구절과 함께:

이 예제를 C++로 컴파일해 보셨습니까? 아니면 일반적인 이론적 추론입니까?

내가 제공한 작업 C++ 예제에 대한 응답으로

안써봤다면 그냥 쓰세요.

방금 시도했다는 사실에 대한 응답으로.

 
Stanislav Korotky :

이 두 구절과 함께:

내가 제공한 작업 C++ 예제에 대한 응답으로

방금 시도했다는 사실에 대한 응답으로.

ServiceDesk에 글을 작성할 때 타사 사이트의 코드도 예로 인용합니까? 그렇지 않다면 그 이유는 무엇입니까?
 
A100 :
참고로 두 예제가 모두 C++로 명확하게 번역된 경우 C++에서 두 경우 모두 오류가 발생합니다. 첫 번째 경우의 MQL은 컴파일 프로세스(언어 자체가 아님)가 다르기 때문에 오류를 발생시키지 않습니다.

고맙습니다.

 
Andrey Barinov :

고맙습니다.

근거가되지 않기 위해 후자와 유사합니다 (내 방식으로 약간 수정했습니다).

 #ifdef __cplusplus
class B;
class A {
         int f( B* b ) { return b->i; } //Error: E2315
         int i;
};
class B : public A {};
#endif

그리고 원래 게시물로 돌아가기

 #ifdef __cplusplus
class B;
class A {
         void f() {}
         void g() { b->f(); } //Error: E2315
        B *b;
};
class B : public A {};
#endif
 

확인해보니 Stanislav의 버전이 VS 2010에서 성공적으로 컴파일됩니다. 또한 메서드뿐만 아니라 private 필드에 액세스하는 것도 작동합니다. 그래서 아마도 A100은 이번에 결론에 흥분했을 것입니다)

 
Alexey Navoykov :

확인해보니 Stanislav의 버전이 VS 2010에서 성공적으로 컴파일됩니다. 또한 메서드뿐만 아니라 private 필드에 액세스하는 것도 작동합니다. 그래서 아마도 A100은 이번에 결론에 흥분했을 것입니다)

https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 와 정확히 일치합니까?

위는 내 옵션입니다 ... 여기에 코드를 게시하십시오. 왜냐하면 그는 직접 게시할 수 없기 때문입니다.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Форум алго-трейдеров MQL5
 
A100 :

https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 와 정확히 일치합니까?

위는 내 옵션입니다 ... 여기에 코드를 게시하십시오. 왜냐하면 그는 직접 게시할 수 없기 때문입니다.

어떤 컴파일러로 컴파일하셨나요? 내 VS 2010에서 코드는 완전히 다른 이유로 컴파일되지 않습니다. 클래스 B는 이 클래스의 메서드가 호출되는 위치에 정의되어 있지 않습니다. 이렇게 하려면 g() 정의를 클래스 외부로 이동해야 합니다. 그리고 Stanislav는 그렇게 했습니다. 저것들. 코드는 다음과 같아야 합니다.

 class B;
class A {
   void f() {}
   void g();
  B *b;
};
class B : public A {};


void A::g( void )
{
  b->f();
}

그리고 컴파일됩니다.

 
Alexey Navoykov :

어떤 컴파일러로 컴파일하셨나요?

사실, 이것은 아무것도 변경하지 않습니다 - 컴파일 오류(저는 태블릿이 있습니다 - Borland 컴파일러)

 #ifdef __cplusplus
class B;
class A {
         void f() {}
         void g();
        B *b;
};
class B : public A {};
void A::g() { b->f(); } //Error: E2247
#endif