2012-10-08 37 views
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的Stl的容器: '刪除':不能從 轉換 '的std :: basic_string的< _Elem,_Traits,_AX>' 到 '空隙 *' C: \用戶\託梅克\文檔\ Visual Studio 2010的\解決方案\ clean_rough_draft \ clean_rough_draft \ main.cpp中20 1 clean_rough_draft的std :: basic_string的類型

爲什麼被拋出這樣的錯誤,以及如何解決它?

+1

['#包括'](http://loungecpp.wikidot.com/faq#toc1) –

+5

世界你爲什麼這樣做'刪除[] results.front();'? – Blastfurnace

+0

錯誤消息的其餘部分(包括實際的模板參數)是什麼? – jpalecek

回答

4

你的第一個問題是你忘了包括<string>

你目前的問題是你的刪除沒有意義。你的字符串不是動態分配的,front()無論如何都會返回一個引用。所以,你試圖在非數組的東西上調用數組刪除(一個字符串是一個封裝數組的對象)並且不是首先動態分配的(並且不是指針的引用) 。

相關問題