2009-11-27 57 views
3

我正在嘗試更改某個文本框消息。它會顯示我的輸出。字符串尚未聲明,QT

這是我在我的main()

#include "form2.h" 
.... 
string recvMSG = "random"; 

182 ::窗體2 :: changeOutput(recvMSG); ...

我form2.h中我有:

#include <string.h>  
#include <iostream> 
#include <stdlib.h>  
... 
    void Form2::changeOutput(string s) 
    { 
    QString s1 = i18n(s); 
    output_box.setText(s1); 

    } 

但我仍然得到: 的.ui/form2.h:56:錯誤: '串' 還沒有被宣佈

謝謝。

編輯:: KK所以現在其表示:: TCPClient.cpp:182:錯誤:不能調用成員函數 '虛擬無效窗體2 :: changeOutput(的std :: string)' 沒有對象

回答

12

string位於std名稱空間中,因此您需要將其稱爲std::string,或者您需要使用當前範圍中的名稱using namespace std;using std::string;

而且頭部被稱爲string,不string.h,所以包括這樣說:

#include <string> 

一般來說你可能也想,如果你是在用QT部件連接用它來使用Qt的QString而不是std::string這通常採取QString參數。

1

我猜你應該使用頭<string>然後用std::string(更妙的是const std::string &

+2

更妙的是不是STL和Qt字符串類和容器混用。 –

+0

的確如此,但有時您希望隱藏您在類的接口中使用的庫的內部數據類型,以避免客戶必須包含第三方標頭。這都是環境問題。 –