C++ 表达式必须具有指向对象类型的指针,下标需要数组或指针类型 RC5级{ 公众: RC5(): _bufKey(新的无符号[4]), _bufSub(新的未签名的[26]){ } 无符号int8测试(无符号int8数据); 虚拟~RC5(){ 删除[]_bufKey; 删除[]_bufSub; } 私人: 未签名的int32*常数bufKey; 未签名的int32*常量bufSub; }; 无符号的uuu int8 RC5::测试(无符号的uuuu int8数据) { 对于(int i=0;i

C++ 表达式必须具有指向对象类型的指针,下标需要数组或指针类型 RC5级{ 公众: RC5(): _bufKey(新的无符号[4]), _bufSub(新的未签名的[26]){ } 无符号int8测试(无符号int8数据); 虚拟~RC5(){ 删除[]_bufKey; 删除[]_bufSub; } 私人: 未签名的int32*常数bufKey; 未签名的int32*常量bufSub; }; 无符号的uuu int8 RC5::测试(无符号的uuuu int8数据) { 对于(int i=0;i,c++,C++,问题似乎在于,在测试函数中,您将数据作为无符号的int8而不是这些值的数组传递。方括号的下标是导致错误的原因。将函数更改为按数组获取其值应该可以解决此问题。@GMan,因为接受的答案建议这样做。@Konrad:啊。:/+1当然是你的。 class RC5 { public: RC5() : _bufKey(new unsigned __int32[4]), _bufSub(new unsigned __int32[26])

问题似乎在于,在测试函数中,您将数据作为无符号的int8而不是这些值的数组传递。方括号的下标是导致错误的原因。将函数更改为按数组获取其值应该可以解决此问题。

@GMan,因为接受的答案建议这样做。@Konrad:啊。:/+1当然是你的。
  class RC5 {
      public:
        RC5() :
          _bufKey(new unsigned __int32[4]),
          _bufSub(new unsigned __int32[26]) {
        }
        unsigned __int8 Test(unsigned __int8 data);

        virtual ~RC5() {
          delete [] _bufKey;
          delete [] _bufSub;
        }
      private:
        unsigned __int32 *const _bufKey;
        unsigned __int32 *const _bufSub;
    };

    unsigned __int8 RC5::Test(unsigned __int8 data)
    {
                for (int i = 0; i < 4; i++)
                {
                    _bufKey[i] = (unsigned __int32)(data[i * 4] + (data[i * 4 + 1] << 8) + (data[i * 4 + 2] << 16) + (data[i * 4 + 3] << 24));
                    }       
    }