void address_pool::set_address_pool(QString get_IP)
{
QString ip;
ip= get_IP;
qDebug()<<"IP"<<ip;
QStringList str=ip.split(",");
QStringList strlist= str.at(0).split(".");
// qDebug()<<strlist.at(0);
// qDebug()<<strlist.count();
bool m;
int number=str.at(2).toInt(&m,10);
// qDebug()<<number;
QString start;
int start_end;
QString IP;
start=strlist.at(0)+"."+strlist.at(1)+"."+strlist.at(2)+".";
// qDebug()<<"start"<<start;
bool ok;
start_end=strlist.at(strlist.count()-1).toInt(&ok,10);
for(int i=0;i<number;i++)//主要看这,在这插入
{
start_end+=i;
IP=start+QString::number(start_end);
pool.insert(i,IP);
qDebug()<<IP;
IP="";
start_end=strlist.at(strlist.count()-1).toInt(&ok,10);
}
}
void address_pool::provide_IP(QByteArray reciver)
{
QByteArray send=reciver;
qDebug()<<"receiver_requst"< qDebug() for(p=pool.begin();p!=pool.end();p++)//为什么在这pool.size的值为0
{
qDebug() if(p.value()!="")
{
send.append(p.key());
if(send.size() {
for(int i=send.size();i {
send.append('\0');
}
}
send.append(p.value());//提供IP地址
if(send.size() {
for(int i=send.size();i {
send.append('\0');
}
}
send.append(ser_ip);//提供server IP地址
if(send.size() {
for(int i=send.size();i {
send.append('\0');
}
}
// send_IP_ID=p.key();
// send_IP_address=p.value();
p.value()="";
emit send_IP(send);
qDebug() break;
}
}
}
在头文件里定义的私有变量是
QMap pool;
QMap::iterator p;
是不是因为局部变量的原因,还是pool被释放了,求大神指导
另一个函数中传递Qmap 这个变量过去。然后函数内部再遍历map
QMap做成全局变量,或是这两个函数和QMap都放在同一个类里。做为同一个类的成员
如果在函数中定义的,只能 传Qmap值 过去咯,赶脚 用成员变量 回好一些,方便,不用重新 写方法,相当于全局,程序结束时 释放掉就行了