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

问题描述 投票:0回答:1

我创建了 2 个复杂类型

BitsByte
变量指针,并最初将它们设置为
nullptr
。一个将保存该字的高字节,另一个将保存该字的低字节。

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

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

我有一个

setValue
方法将
mUpper
mLower
设置为值的前两个字节,该值会将十进制数转换为名为 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));
}

我想在

setValue
传递值时调用
mLower
方法。当我尝试将 mLower 设置为值的前 8 位时,调试器在 Xcode 上显示线程 1:
EXC_BAD_ACCESS (code=1, address=0x0)

*mLower = value;     setValue(value);
c++ arrays pointers bit
1个回答
0
投票

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

*mLower = value;

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

© www.soinside.com 2019 - 2024. All rights reserved.