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 回答