uint16 ServerSession::login( const char *passwd, uint32 status)
{
initSession();
char pass[8];
strncpy(pass, passwd, sizeof(pass));
setkey(pass);
endes((char*)passwd);//此处的endes()中的参数是一个char *型的,如何把const char*转变为char * 啊?
UdpOutPacket *out = createPacket(UDP_LOGIN);
*out << passwd << status << (uint16) MYICQ_TCP_VER << realIP;
return sendPacket(out);
}

解决方案 »

  1.   

    Grammar postfix-expression: 
    const_cast < type-id > ( expression ) 
    The const_cast operator can be used to remove the const, volatile, and __unaligned attribute(s) from a class.A pointer to any object type or a pointer to a data member can be explicitly converted to a type that is identical except for the const, volatile, and __unaligned qualifiers. For pointers and references, the result will refer to the original object. For pointers to data members, the result will refer to the same member as the original (uncast) pointer to data member. Depending on the type of the referenced object, a write operation through the resulting pointer, reference, or pointer to data member might produce undefined behavior.You cannot use the const_cast operator to directly override a constant variable's constant status.The const_cast operator converts a null pointer value to the null pointer value of the destination type.Example// expre_const_cast_Operator.cpp
    // compile with: /EHsc
    #include <iostream>using namespace std;
    class CCTest {
    public:
       void setNumber( int );
       void printNumber() const;
    private:
       int number;
    };void CCTest::setNumber( int num ) { number = num; }void CCTest::printNumber() const {
       cout << "\nBefore: " << number;
       const_cast< CCTest * >( this )->number--;
       cout << "\nAfter: " << number;
    }int main() {
       CCTest X;
       X.setNumber( 8 );
       X.printNumber();
    }
    On the line containing the const_cast, the data type of the this pointer is const CCTest *. The const_cast operator changes the data type of the this pointer to CCTest *, allowing the member number to be modified. The cast lasts only for the remainder of the line on which it appears.
      

  2.   

    uint16 ServerSession::login( const char *passwd, uint32 status)
    这个函数原形是你写的吗,还是系统生成出来的?如果是系统生成的,应该不能随便改吧?
    如果是一定要转换的话,用(char *)强制转化就可以了。
      

  3.   

    如果是一定要转换的话,用(char *)强制转化就可以了。这个不行的
      

  4.   

    char sz[MAX_PATH];strcpy(sz, szConst);