您的位置:首页 > 其它

PC-LINT检查的编译问题

2014-09-05 11:34 190 查看
1.

class A

{

    char name[10];

    public:

    const char* getA() const     //一定要有const,因为name是一个数组名即常量指针

    {

        return name;

    }    

}

2.

class TServiceTypeConfigItem

{

public:

    char ServiceType[MaxServiceTypesLength+1];

    char serviceTypeIp[MaxIPAddressLength+1];  

    TServiceTypeConfigItem()

    {

        memset(ServiceType, 0, sizeof(ServiceType));

        memset(serviceTypeIp,0,sizeof(serviceTypeIp));

    }

public:

    const char* getServiceType() const { return ServiceType;}

    bool setServiceType(PCSTR ServiceType)

    {

        safeCopyStr(this->ServiceType,ServiceType,MaxServiceTypesLength);

        return true;  

    }

    const char* getServiceTypeIp() const { return serviceTypeIp;}

    bool setServiceTypeIp(PCSTR serviceTypeIp)

    {

        safeCopyStr(this->serviceTypeIp,serviceTypeIp,MaxIPAddressLength);

  return true;

    }

};

 

class xxx

{

    TServiceTypeConfigItem m_ServiceTypeConfigItem[MAX_IPTOSERVICETYPE_NUM];//是一个数组类型

public:

    const TServiceTypeConfigItem*  getServiceTypeConfigItem(int index) const//这里必须是const,因为是数组名加偏移

    {

        if ((index < 0) || (index > m_IpToServiceTypeNum))

        {return NULL;}

        return m_ServiceTypeConfigItem+ index;

    }

}

const_cast<TServiceTypeConfigItem*>(getServiceTypeConfigItem(i))->getServiceType()//这里返回的是const型的,再调用getgetServiceType函数就错了,因为const型对像或者指针不能调用非const型函数,所以要去掉const属性。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pc-lint