首页 文章

c间接水平不同

提问于
浏览
-1

我在尝试编译时收到此错误消息:

  • 错误C2556: '诠释*加密(常量BinaryBuffer&,常量EncryptionKey设置&)':重载函数仅通过从 'BinaryBuffer加密(常量BinaryBuffer&,常量EncryptionKey设置&)' 返回类型不同

  • 错误C2040:'加密':'int *(const BinaryBuffer&,const EncryptionKey&)'与'BinaryBuffer(const BinaryBuffer&,const EncryptionKey&)'的间接级别不同

  • 错误C2556: '字符*解密(常量BinaryBuffer&,常量EncryptionKey设置&)':重载函数仅通过从返回类型不同 'BinaryBuffer解密(常量BinaryBuffer&,常量EncryptionKey设置&)'

  • 错误C2040:'解密':'char *(const BinaryBuffer&,const EncryptionKey&)'与'BinaryBuffer(const BinaryBuffer&,const EncryptionKey&)'的间接级别不同

cpp文件:

#include "Encryption.h"
#include <algorithm>
#include <iterator>

#pragma intrinsic(_rotl8, _rotr8)

constexpr auto xorKeyLocation = 0;
constexpr auto numberOfBitsToRotateLocation = 1;

int* Encrypt(const BinaryBuffer& plainText, const EncryptionKey& key)
{
    const auto xorKey = key[xorKeyLocation];
    const auto numberOfBitsToRotate() = key[numberOfBitsToRotateLocation];
    const BinaryBuffer result;

    do
    {
        std::transform(
            plainText.begin(),
            plainText.end(),
            std::back_inserter(result),
            [&](const auto byte)
        {
            const auto xored = byte ^ xorKey;
            const auto shifted = _rotl8(xored, numberOfBitsToRotate);

            return shifted;
        });
    } while (0);

    return result;
}

char* Decrypt(const BinaryBuffer& cipherText, const EncryptionKey& key)
{
    const auto xorKey = key[xorKeyLocation];
    const auto numberOfBitsToRotate() = key[(std::vector<int>)numberOfBitsToRotateLocation];
    const BinaryBuffer result;

    std::transform(
        cipherText.cbegin(),
        cipherText.cend(),
        std::back_inserter(result),
        [&](const auto byte)
    {
        const auto shifted = _rotr8(byte, numberOfBitsToRotate);
        const auto xored = shifted ^ xorKey;
        return xored;
    });

    return result;
}

h文件:

#pragma once

#include "Common.h"

BinaryBuffer Encrypt(const BinaryBuffer& plainText, const EncryptionKey& key);
BinaryBuffer Decrypt(const BinaryBuffer& cipherText, const EncryptionKey& key);

我做错了什么?

谢谢 .

1 回答

  • 2

    函数的返回类型与 Headers 中的声明不匹配 .

相关问题