2

C++/CX Windows 저장소 구성 요소 클래스가 있고 C#에서 호출 할 수있는 사용자 지정 공용 ToString 메서드를 구현하고 싶습니다. 그것은 잘 컴파일하지만 컴파일러에서 이상한 경고를 받고 있어요. 이 경고 내가 컴파일 할 때C++/CX Metro 클래스의 ToString을 재정의하는 경고 C4827

public ref class Foo sealed 
{ 
public: 
    String^ ToString() 
    { 
     return ref new String(L"This is from class Foo"); 
    } 
}; 

위 클래스 비주얼 스튜디오 2013을 보여줍니다 :

경고 C4827 : 여기에 경고를 재현 코드는 0 매개 변수 공개 'ToString'방법은 가 표시되어야합니다 가상 및 오버라이드 (Foo.cpp)

그러나 메서드 서명에 '가상 오버라이드'를 추가하면 컴파일러에서 구문 오류가 발생합니다. C++/CX 클래스의 Object.ToString()을 어떻게 오버라이드 할 수 있습니까?

+0

C++/CLI가 C++이 아닙니다. – Deduplicator

+0

아, 내 태그를 수정합니다. – dbeachy1

답변

3

virtual은 처음에, override이 끝에갑니다. 또한 ref new String을 없애고 컴파일러에서 문자열 상수를 String^으로 처리해야한다는 것을 알 수 있습니다.

public ref class Foo sealed 
{ 
public: 
    virtual String^ ToString() override 
    { 
     return "This is from class Foo"; 
    } 
}; 
관련 문제