ある関数でクラスへのポインターを宣言し、このポインターをパラメーターとして別の関数を呼び出そうとしています。クラスを作成し、この新しく作成されたクラスへのポインターを入力ポインターに割り当てようとする別の関数。
最初の方法:
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;
}
2番目のメソッドは機能しており、ethはオブジェクトに価値をもたらします。しかし、最初のメソッドに戻った後、ethはnullになります...そして理由はわかりません。私が見逃したポインターについての重要な詳細は何ですか?