gpt4 book ai didi

c++ - 指针不取值

转载 作者:行者123 更新时间:2023-11-28 07:53:07 25 4
gpt4 key购买 nike

我试图在一个函数中声明指向类的指针,并使用该指针作为参数调用另一个函数。另一个函数试图创建类并将指向这个新创建的类的指针分配给输入指针。

第一种方法:

size_t packetLen = 0;
ETH2::PacketEthernetII* eth = NULL;
IPv4::PacketIPv4* ip4 = NULL;
ICMP::PacketICMP* icmp = NULL;
TCP::PacketTCP* tcp = NULL;
UDP::PacketUDP* udp = NULL;
if (!buildPackets(formats, packetLen, eth, ip4, icmp, tcp, udp)) {}

另一种方法:

    bool Device::buildPackets(const Tokens& formats, size_t& packetLen, 
ETH2::PacketEthernetII* eth, IPv4::PacketIPv4* ip4,
ICMP::PacketICMP* icmp, TCP::PacketTCP* tcp, UDP::PacketUDP* udp)
{
for (size_t i = 0; i < formats.size(); ++i) {
if (Utilities::startsWith(formats[i], ETH2PROTO)) {
eth = createEthernet2(formats[i]);
if (!eth)
return false;
packetLen += eth->len();
}
}
return true;
}

第二种方法有效,eth 为对象取值。但是返回到第一种方法后,eth 为空......我不知道为什么。我错过了关于指针的哪些重要细节?

最佳答案

通过引用调用:

bool Device::buildPackets(const Tokens& formats, size_t& packetLen, 
ETH2::PacketEthernetII* &eth, IPv4::PacketIPv4* ip4,
ICMP::PacketICMP* icmp, TCP::PacketTCP* tcp, UDP::PacketUDP* udp)

关于c++ - 指针不取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com