开发者

c++ managed class constructor can not have parameters?

please help me out , why my code cannot compile, the compiler complains that: error C2629: 意外的“StringToAnsi (” error C2334: “{”的前面有意外标记;跳过明显的函数体 error C2629: 意外的“StringToAnsi (” ... Here is my code:

#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_c开发者_如何学编程ast<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;
    }


Because you have two constructors with the same number of parameters. There is an Object and a String, but both are an Object. So this seems very ambiguous.

When you create two methods (or constructors), you can't let them have the same number of parameters, because the compiler doesn't know which one to call.

When you put in a string into the construction like so: new StringToAnsi("bla"). The compiler doesn't know which constructor to use.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜