演算子に一致しません

user2646276

ユーザーに複数の16進文字列をコンソールに入力してから、それらの文字列をビットセットに変換するように求める関数を作成しようとしています。関数がビットセットへのポインターを使用して、ビットセットが親関数に格納されるようにしたい。C ++ 11を使用していないため、64ビットビットセットを2つの16進変換操作に分割しました。

void consoleDataInput(bitset<1> verbose, bitset<32>* addr, bitset<64>* wdata, bitset<8>* wdata_mask, bitset<1>* rdnwr)
{
    cout << "enter 1 for read 0 for write : ";
    cin >> *rdnwr;

    string        tempStr;
    unsigned long tempVal;
    istringstream tempIss;

    // Input the addr in hex and convert to a bitset

    cout << "enter addr in hex : ";
    cin >> tempStr;
    tempIss.str(tempStr);
    tempIss >> hex >> tempVal;
    *addr = tempVal;

    // enter wdata and wdata_mask in hex and convert to bitsets

    if (rdnwr[0] == 1)
    {
        *wdata = 0;
        *wdata_mask = 0;
    }
    else
    {
        // wdata

        bitset<32> tempBitset;
        cout << "enter wdata in hex : ";
        cin >> tempStr;
        if (tempStr.length() > 8)
        {
            tempIss.str(tempStr.substr(0,tempStr.length()-8));
            tempIss >> hex >> tempVal;
            tempBitset = tempVal;
            for (int i=31; i>=0; i--)
            {
                wdata[i+32] = tempBitset[i];
            }

            tempIss.str(tempStr.substr(tempStr.length()-8,tempStr.length()));
            tempIss >> hex >> tempVal;
            tempBitset = tempVal;
            for (int i=32; i>=0; i--)
            {
                wdata[i] = tempBitset[i];
            }
        }
        else
        {
            tempIss.str(tempStr);
            tempIss >> hex >> tempVal;
            tempBitset = tempVal;
            for (int i=32; i>=0; i--)
            {
                wdata[i] = tempBitset[i];
            }
        }

        // wdata_mask

        cout << "enter wdata_mask in hex : ";
        cin >> tempStr;
        tempIss.str(tempStr);
        tempIss >> hex >> tempVal;
        *wdata_mask = tempVal;
    }

code :: blocksでGCCを使用してコンパイルしようとするとエラーが発生します

C:\Diolan\DLN\demo\ApolloSPI\main.cpp|202|error: no match for 'operator=' in '*(wdata + ((((sizetype)i) + 32u) * 8u)) = std::bitset<_Nb>::operator[](std::size_t) [with unsigned int _Nb = 32u; std::size_t = unsigned int](((std::size_t)i))'|

線を強調しているのはどれですか

wdata[i+32] = tempBitset[i];

私が理解しているように、これはポインタであることを示すものとして機能するwdata[i+32]ため、以前は*演算子を使用する必要はありません[i+32]

どうすれば前進できるかわかりません。=オペレータは、私は、エラーを理解していないので、ビットセットで使用する有効なものです。

ありがとう。

davmac

wdataは確かにポインタであるため、wdata [i + 32]は実際には*(wdata + i + 32)と同等であり、ビットセット<64>を指します。このビットセットをtempBitset [i]で割り当てています。これは、私が間違えない限り、シングルビットです。

つまり、1つのビットの値をビットセット全体に割り当てようとしています。

あるビットセットの1つのビットを別のビットセットのビットの値に設定たいと思っているのではないかと思います。その場合は、「*」必要だと思います

(*wdata)[i+32] = tempBitset[i];

つまり、大まかに言って、wdataが指すビットセット<64>を取得し、そのビット[i +32]をtempBitsetのビットセットのビット[i]と同じ値に設定します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++演算子<<に一致しません

分類Dev

std :: cinの演算子>>に一致しません

分類Dev

エラー:演算子<<に一致しません

分類Dev

stdベクトルが演算子に一致しません==

分類Dev

エラーが発生し続ける '演算子>>'に一致しません;

分類Dev

#ompを使用する場合、「演算子-」に一致しません

分類Dev

演算子>>オーバーロードエラーを解決する方法(「演算子>>」に一致しません)

分類Dev

ダブルポインタを逆参照できません。「演算子*に一致しません」

分類Dev

ユーザー定義の変換演算子テンプレートと組み込み演算子:演算子に一致しません

分類Dev

ベクトル要素を出力しようとすると、「演算子<<」に一致しません

分類Dev

エラー:文字列を減算しようとすると、「演算子-」に一致しません

分類Dev

`エラーを完全にバイパスする方法: '演算子=='`に一致しませんか?

分類Dev

C ++ "std :: vector <std :: pair>を出力するときに演算子<<"に一致しません

分類Dev

二項演算子の解析で入力が一致しません

分類Dev

SML演算子とオペランドが一致しません

分類Dev

BigQueryエラー:演算子に一致する署名がありません> =

分類Dev

型の不一致:三項演算子を使用してintからbyteに変換できません

分類Dev

Angular 6&rxjs6-パイプ演算子-タイプ 'Observable <>'は署名に一致しません

分類Dev

演算子 '='に一致しません(std :: array <T、3>およびstd :: initializer_list <T>)

分類Dev

エラー: '演算子=='に一致しません、どうすればよいですか?

分類Dev

C ++エラー:「入力>> Group1-> Entrepreneur :: Item」の「演算子>>」に一致しません|

分類Dev

エラー:演算子 "!="がこれらのオペランドに一致しません

分類Dev

+演算子で始まる文字列がデータベースの文字列値と一致しません

分類Dev

*演算子をオーバーロードしても一致エラーは発生しません

分類Dev

一致するものとしてC ++テンプレート演算子が見つかりません

分類Dev

標準MLエラー:演算子とオペランドが一致しません

分類Dev

エラーSMNLJ-演算子とオペランドが一致しません

分類Dev

SML演算子とオペランドがフォルダで一致しません

分類Dev

SML / NJエラー:演算子とオペランドが一致しません

Related 関連記事

  1. 1

    C ++演算子<<に一致しません

  2. 2

    std :: cinの演算子>>に一致しません

  3. 3

    エラー:演算子<<に一致しません

  4. 4

    stdベクトルが演算子に一致しません==

  5. 5

    エラーが発生し続ける '演算子>>'に一致しません;

  6. 6

    #ompを使用する場合、「演算子-」に一致しません

  7. 7

    演算子>>オーバーロードエラーを解決する方法(「演算子>>」に一致しません)

  8. 8

    ダブルポインタを逆参照できません。「演算子*に一致しません」

  9. 9

    ユーザー定義の変換演算子テンプレートと組み込み演算子:演算子に一致しません

  10. 10

    ベクトル要素を出力しようとすると、「演算子<<」に一致しません

  11. 11

    エラー:文字列を減算しようとすると、「演算子-」に一致しません

  12. 12

    `エラーを完全にバイパスする方法: '演算子=='`に一致しませんか?

  13. 13

    C ++ "std :: vector <std :: pair>を出力するときに演算子<<"に一致しません

  14. 14

    二項演算子の解析で入力が一致しません

  15. 15

    SML演算子とオペランドが一致しません

  16. 16

    BigQueryエラー:演算子に一致する署名がありません> =

  17. 17

    型の不一致:三項演算子を使用してintからbyteに変換できません

  18. 18

    Angular 6&rxjs6-パイプ演算子-タイプ 'Observable <>'は署名に一致しません

  19. 19

    演算子 '='に一致しません(std :: array <T、3>およびstd :: initializer_list <T>)

  20. 20

    エラー: '演算子=='に一致しません、どうすればよいですか?

  21. 21

    C ++エラー:「入力>> Group1-> Entrepreneur :: Item」の「演算子>>」に一致しません|

  22. 22

    エラー:演算子 "!="がこれらのオペランドに一致しません

  23. 23

    +演算子で始まる文字列がデータベースの文字列値と一致しません

  24. 24

    *演算子をオーバーロードしても一致エラーは発生しません

  25. 25

    一致するものとしてC ++テンプレート演算子が見つかりません

  26. 26

    標準MLエラー:演算子とオペランドが一致しません

  27. 27

    エラーSMNLJ-演算子とオペランドが一致しません

  28. 28

    SML演算子とオペランドがフォルダで一致しません

  29. 29

    SML / NJエラー:演算子とオペランドが一致しません

ホットタグ

アーカイブ