通过多个 类 访问成员时出错

Error when accessing member over multiple classes

我是 C++ 的新手,我正在编写一个简单的区块链程序作为一种练习。当我 运行 下面的代码时,我似乎得到了各种各样的错误:

Process returned -1073741819 (0xC0000005)

代码如下:

#include <iostream>
#include <time.h>
#include <string>
using namespace std;

class Block
{
    int data, previous_hash;
public:
    string timestamp;
    Block(string a, int b, int c)
    {
        timestamp = a;
        data = b;
        previous_hash = c;
    };
};

string getTime()
{
    time_t now = time(NULL);
    struct tm tstruct;
    char buf[40];
    tstruct = *localtime(&now);
    strftime(buf, sizeof(buf), "%X", &tstruct);
    return buf;  //Simple code to return current time
}

class BlockChain
{
public:
    Block chain[];
    BlockChain()
    {
        chain[0]=createGenesisBlock();
    }
    Block createGenesisBlock()
    {
        return Block(getTime(), 10, 0);
    }
};

int main()
{
    BlockChain myChain;
    cout << "current time is " << getTime();
    cout << myChain.chain[0].timestamp; //Is this correct?
}

我在 main() 中包含一行以访问对象 mychain 中的字符串 timestamp。我怀疑这可能是问题所在,但我不确定在同时调用 BlockchainBlock 类.

时我还能如何访问时间戳

目前,BlockChain::chain 是一个大小未知的数组。但是,当您在 BlockChain 的构造函数中访问 chain[0] 时,您 假设 chain 指向有效内存,但事实并非如此,因为你永远不会初始化它。这就是为什么你会因为错误的内存访问而崩溃。我建议使用 std::vector<Block> 而不是 Block[],您可以根据需要调整大小:

class BlockChain {
public:
    std::vector<Block> chain;
    BlockChain() {
        // initialize and append a new block to chain
        chain.emplace_back(createGenesisBlock());
    }