2011-03-17 6 views
0

것은 저를 도와주세요, 내 코드를 컴파일 할 수없는 이유, 컴파일러는 불평이 : 意外 的 "StringToAnsi (" 오류 C2334 : 오류 C2629 "{"的 前面 有 意外 标记, 跳过 明显 的 函数 体 오류 당신은 같은 수의 매개 변수 두 개의 생성자를 가지고 있기 때문에 객체와 문자열이 있습니다C++ 관리 클래스 생성자에 매개 변수를 사용할 수 없습니까?

#using <System.dll> 
#using <mscorlib.dll> 
class StringToAnsi 
{ 
private: 
    void * m_ptr; 
public: 
    StringToAnsi(System::Object^str) 
    { 
      m_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(safe_cast<System::String^>(str)).ToPointer(); 
    } 
    StringToAnsi(System::String^str) 
    { 
     m_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str).ToPointer(); 

    } 
    ~StringToAnsi() 
    { 
     System::Runtime::InteropServices::Marshal::FreeHGlobal(System::IntPtr(m_ptr)); 
    } 
    operator const ACHAR*() 
    { 
     return (const ACHAR*)m_ptr; 
    } 
+0

오류 메시지를 번역 해 주실 수 있습니까? –

+3

SCP : –

+0

여기에있는 모든 사람에게 미안하지만, vc7.0을 사용하고 처음으로 혼합 코드를 작성하면 포인터가 *이지만 그렇지는 않습니다.^그게 전부입니다. – learner

답변

0

하지만 모두 객체이다 : C2629은 :. 意外 的 "StringToAnsi는 (" 는 ... 여기 내 코드입니다 그래서 이것은 매우 모호한 것 같습니다.

두 개의 메서드 (또는 생성자)를 만들 때 컴파일러는 어느 매개 변수를 호출해야할지 모르기 때문에 동일한 수의 매개 변수를 가질 수 없습니다.

다음과 같이 문자열을 넣을 때 : new StringToAnsi("bla"). 컴파일러는 사용할 생성자를 알지 못합니다.

관련 문제