構造体 a または構造体 b のいずれかを保持するはずの両端キューがあります。問題は、構造の 1 つに、削除する必要があるポインターが含まれていることです。
#pragma once
#include <iostream>
#include <deque>
#include <typeinfo>
struct packetUpdate {
int recv;
int packetID;
};
struct packet {
int recv;
int packetSize;
char* m_packet;
};
template <class T>
class PacketQueue
{
private:
int m_lastElement;
int m_maxElementReached;
int m_maxElements;
std::deque<T> m_PacketList;
public:
PacketQueue() { m_lastElement = -1; m_maxElements = 0; m_maxElementReached = 0; }
~PacketQueue()
{
if(typeid(T).name() == typeid(packet).name()) {
for(int i = 0; i < m_lastElement+1; i++) {
delete[] m_PacketList[i].m_packet;
}
}
m_PacketList.~deque();
}
};
これはうまくいきません。コンパイラはpacketUpdate
、 member がないことを教えてくれm_packet
ます。なぜ機能しないのかは理解していますが、問題は、ほとんど同じように見える2つの異なるクラスを作成せずにこれを機能させる方法があるかどうかです。
もちろん、これはクラスのほんの一部ですが、私の問題を説明する必要があります。
このような問題を抱えたのは私が初めてではないと思いますが、テンプレートの操作にあまり慣れていないため、何を探すべきかわかりませんでした。