c++ 如何将指针类设置为int值以传递给函数?如何将类的成员设置为字节字中值的前8位?

50pmv0ei  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(124)

我创建了2个复杂类型的BitsByte变量指针,并将它们初始化为nullptr。一个将保存单词的高位字节,另一个将保存单词的低位字节。

// File: BitsWord.h
class BitsWord
{
private:
int value;
int bits[16] = {};

    BitsByte* mLower{nullptr};
    BitsByte* mUpper{nullptr}; ...

我有一个setValue函数,用来将mUpper和mLower设置为value的前两个字节,这将把十进制数转换成名为bits的数组中的二进制数。

// BitsWord.cpp
void BitsWord::setValue(int value)
{ 
for(int i = 0; i < 16; i++)
    { bits[i] = static_cast<bool>(value & (1 << i)); }
reverse(begin(bits), end(bits));
}

我想在mLower传递值时调用setValue函数。调试器显示线程1:当我试图将mLower设置为值的前8位时,Xcode上的EXC_BAD_ACCESS(代码=1,地址=0x0)。

*mLower = value;     setValue(value);
z31licg0

z31licg01#

您需要在以下行之前为mLower分配内存:

*mLower = value;

应首先创建BitsByte的示例,然后在调用setValue()函数之前分配指针mLower以指向该示例。

相关问题