類成員變量(一維字符數組)定義及初始化


頭文件

#pragma once

#include <iostream>
using namespace std;
typedef unsigned char uchar;
typedef unsigned short ushort;

class CM_message
{
public:
CM_message();
virtual ~CM_message();

private:
static const int m_ihead_len = 2;
static const int m_imax_body_len = 2048 - 2;
static const int m_iformat_len = 8;
std::size_t m_ibody_len;
std::size_t m_ioff_set;
static const char * const m_szformat_str;
uchar m_szdata[m_ihead_len + m_imax_body_len];
};

 實現文件

#include "pch.h"
#include "CM_message.h"

//定義
const char* const CM_message::m_szformat_str = "12345678";
const int CM_message::m_ihead_len;
const int CM_message::m_imax_body_len;
const int CM_message::m_iformat_len;

CM_message::CM_message()
{
std::memset(m_szdata, 0, m_ihead_len + m_imax_body_len);
m_ibody_len = 0;
m_ioff_set = 0;
}


CM_message::~CM_message()
{
}

 

這里要說的是uchar m_szdata[m_ihead_len + m_imax_body_len];由這個引出static const int m_imax_body_len = 2048 - 2;

有說static const int m_imax_body_len = 2048 - 2;叫聲明,在實現文件里的叫定義

如果不在實現文件里進行定義,鏈接是會報錯,實際在VS2017環境里,並沒有報錯。我發現“我笑痴狂”的博客里也說了linux下用GCC編譯,也不會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM