Warum funktioniert mein Kopierkonstruktor/meine Zuordnung nicht jedes Mal?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum funktioniert mein Kopierkonstruktor/meine Zuordnung nicht jedes Mal?

Post by Anonymous »

Ich habe eine KlassenzeitstampQuery mit Kopier- und Verschiebungskonstruktoren und -zuweisungen. Ich habe das Ergebnis in Unit -Tests "positiv getestet", aber ich habe einen Fall, in dem dies nicht funktioniert.

Code: Select all

typedef void(__stdcall* TimeStampCallback)(FF::TimestampPack tsp);

struct __declspec(dllexport) TimestampPack
{
int TimeStamp;
int ReaderIndex;

TimestampPack(int ts, int index);
std::wstring Towstring();
};

class __declspec(dllexport) TimeStampQuery
{
protected:
mutable std::mutex _mtx, mtxExit;
std::condition_variable _cv, _cvExit;
bool _run{ true };
int _done{};
int _remaining{};
int _total{};

TimeStampCallback _tsCallback;
FF::QueueStats* _lastStats{};

std::queue _queries;
std::thread _threadCall;
public:

TimeStampQuery(TimeStampCallback tscb);
TimeStampQuery(const TimeStampQuery& other);
TimeStampQuery(TimeStampQuery&& other) noexcept;
TimeStampQuery& operator=(const TimeStampQuery& other);
TimeStampQuery& operator=(TimeStampQuery&& other) noexcept;
void swap(TimeStampQuery& other) noexcept;
~TimeStampQuery();
void Add(int timestamp, int index);
void Add(FF::TimestampPack tsp);

void CallRunner();
int GetDoneCount();
void WaitForFinish();
FF::QueueStats GetStats();
FF::QueueStats* GetStatsPtr();

int GetRemainingCount();
};
< /code>
Definitionen: < /p>
FF::TimestampPack::TimestampPack(int ts, int index)
{
TimeStamp = ts;
ReaderIndex = index;
}

std::wstring FF::TimestampPack::Towstring()
{
std::wstringstream wstr{};
wstr  void
{
TimeStampQuery tsq(tscb); // tsq._tsCallback == tscb // OK
ffreader->TSquery = tsq; // ffreader->TSquery._tsCallback == 0x0000000000000000 // should not happen
} // break point
< /code>
Wie oben kommentiert, habe ich einen Breakpoint A am Ende der Funktion festgelegt, aber es ist, als würde die Kopie nicht geschehen.class __declspec(dllexport) FFreader
{
TimeStampQuery TSquery{nullptr};
Wenn ein Beweis erforderlich ist, um zu überzeugen:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post