Объявления: < /p>
Код: Выделить всё
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>
Определения: < /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>
Как отмечено выше, я установил точку останова в конце функции, но это как если бы копия не произошла.class __declspec(dllexport) FFreader
{
TimeStampQuery TSquery{nullptr};
Подробнее здесь: https://stackoverflow.com/questions/794 ... every-time