class 的所有实例共享相同的值

All instances of a class share the same values

我有一个名为 Data 的 class,每当我声明此 class 的新实例并更改其中的某些内容时,它都会更改 class 的所有实例。我不确定如何解决这个问题,或者它为什么会发生。

(请注意,我已经剥离了我的数据 class 中的很多内容,但这个示例仍然会产生错误)

Data.h

#include <chrono>

volatile class Data{
    public:
        volatile struct Ts{
            volatile int64_t unixTimestamp;
        };

        int ReturnTimestamp() volatile;
        void SetTimestamp(int) volatile;
};

Data.cpp

#include "data.h"
#include <ctime>

volatile Data::Ts data;


int Data::ReturnTimestamp() volatile{
    return data.unixTimestamp;
}

void Data::SetTimestamp(int timestamp) volatile{
    data.unixTimestamp = timestamp;
}

在主要我运行

int main() {
    Data d1;
    Data d2;
    Data d3;

    d1.SetTimestamp(1);
    d2.SetTimestamp(2);
    d3.SetTimestamp(3);

    printf("%i %i %i\n", d1.ReturnTimestamp(), d2.ReturnTimestamp(), d3.ReturnTimestamp());

    return 0;
}

输出为

3 3 3

我希望输出为

1 2 3

为什么不是“1 2 3”?

数据没有在class中定义,所以你创建了一个全局变量。创建成员变量。

class Data{
    public:
        struct Ts{
            volatile int64_t unixTimestamp;
        } data;

        int ReturnTimestamp() volatile;
        void SetTimestamp(int) volatile;
};

而不是volatile Data::Ts data;