1
#ifndef UNICODE
#define UNICODE
#endif

#include <iostream>
#include <queue>
#include <stdio.h>
#include <Windows.h>
#include <string>
using namespace std;

int __cdecl main()
{   
    std::queue<std::basic_string<TCHAR>> results;

    results.push(TEXT("Hello world! ♥☻☺"));

    wcout<<results.front();
    delete [] results.front();

    system("pause");
    return 0;
}

エラー 1 エラー C2440: 'delete': 'std::basic_string<_Elem,_Traits,_Ax>' から 'void *' に変換できません C:\Users\Tomek\Documents\Visual Studio 2010\Solutions\clean_rough_draft\clean_rough_draft\main .cpp 20 1 clean_rough_draft

このようなエラーがスローされる理由と修正方法を教えてください。

4

1 に答える 1

4

最初の問題は、 を含めるのを忘れていたことです<string>

あなたの現在の問題は、削除が意味をなさないことです。あなたの文字列は動的に割り当てられず、とにかく front() はそれへの参照を返します。したがって、配列ではないもの (文字列は配列をカプセル化するオブジェクト) で配列の削除を呼び出そうとしていますが、最初は動的に割り当てられませんでした (ポインターではなく参照で) .

于 2012-10-09T00:09:55.477 に答える