簡體   English   中英

C++ 結構,引用和實例化正確的方式?

[英]C++ Struct,Reference and Instancing the right way?

我正在創建一個回放系統基本上它將用戶輸入存儲為:

std::list<ReplayBuffer>

這是一個:

struct ReplayBuffer
{
    std::bitset<10> flags;
    float frameTime;
    uint64_t frameID;

};

現在我又創建了兩個結構,ReplayFile(文件信息)和 ReplayFileWriter(當然是把文件信息寫入文件)

struct ReplayFile
{
    ReplayFile(std::list<ReplayBuffer>* _buffers) {
        time_t t = time(0);
        date = ctime(&t);
        _version = 1;
        buffers = *_buffers;
    }
    uint16_t _version;
    char* date;
    std::list<ReplayBuffer> buffers;
};

struct ReplayFileWriter
{
   std::ofstream file;
   
   ReplayFileWriter(ReplayFile *data) {
       file.open("replay.cdr", std::ofstream::out);
       file << data;
       file.close();

   }


};

我想要做的是,輸入這個:

ReplayFileWriter(new ReplayFile(&buffers));

所以我將緩沖區(列表)的地址傳遞給 ReplayFile 並將 ReplayFileWriter 的地址傳遞給 ReplayFile 的實例)我應該如何執行此操作(我是 cpp 的新手,觀看了一些視頻到指針,但是當用作參數時很難找到放置“*和&”的正確方法

您可能正在尋找的是這樣的:

struct ReplayBuffer { /* as in your code */ };

struct ReplayFile {
    explicit ReplayFile(const std::list<ReplayBuffer>& _buffers)
        : _version(1), buffers(_buffers) {
      time_t t = time(nullptr);
      date = ctime(&t);
    }
    uint16_t _version;
    std::string date;
    std::list<ReplayBuffer> buffers;
};

ostream& operator<<(ostream& os, const ReplayFile& data) {
  /* Write contents of `data` to `os` here.
     Implementation left as an exercise for the reader. */
  return os;
}

void WriteReplayFile(const ReplayFile& data) {
   file.open("replay.cdr", std::ofstream::out);
   file << data;
   file.close();
}

int main() {
  std::list<ReplayBuffer> buffers = ...;  // initialized somehow.
  WriteReplayFile(ReplayFile(buffers));
}

有趣的部分在operator<<中。 這就是您定義文件格式的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM