2014-12-31 76 views
0

我正在編寫代碼,但是當編譯時,由於main.o和mtp_wrapper.o中的重複符號,我確實遇到了問題。重複的符號是_file_extension_type。我編碼在C++和Qt重複的符號拱X86_64

的file_extension_type是在如下面的定義mtp_wrapper.h結構的陣列的:typedef

struct { 
    char *file_extension; 
    LIBMTP_filetype_t file_type; 
} MTP_file_extension; 


MTP_file_extension file_extension_type [] = { 
    {"wav", LIBMTP_FILETYPE_WAV}, 
    {"mp3", LIBMTP_FILETYPE_MP3}, 
    {"wma", LIBMTP_FILETYPE_WMA}, 
    {"ogg", LIBMTP_FILETYPE_OGG}, 
    {"mp4", LIBMTP_FILETYPE_MP4}, 
    {"wmv", LIBMTP_FILETYPE_WMV}, 
    {"avi", LIBMTP_FILETYPE_AVI}, 
    {"mpeg", LIBMTP_FILETYPE_MPEG}} 

,這是在其中值我們顯示的唯一地方。

mtp_wrapper.cpp包含我所有的類定義,默認情況下包括mtp_wrapper.h

main.cpp中還包括mtp_wrapper.h但我需要它的實例化我班在這樣的主要如下:

int main(int argc, char *argv[]) 
{ 

.... 

    // Detecting puls device 
    //mtp_wrapper MyMtpPuls; 
    mtp_wrapper *MyMtpPuls = new mtp_wrapper; 
    error = MyMtpPuls->ConnectPulsDevice(); 

    .... 

我想這來,我包括mtp_wrapper.cpp和main.cpp中mtp_wrapper.h事實..

,但如果我嘗試在公共類中添加陣列這樣的定義如:

Class xxx : yyy { 

public: 
    MTP_file_extension file_extension_type []; 

該問題消失,但無法使用函數sizeof。

在mtp_wrapper.cpp我需要知道包含在file_Extension_type的最佳途徑數量元素

是我在聲明數組來劃分的sizeof(file_extension_type)通過的sizeof(MTP_file_extension)

,但只要班級sizeof是不可用的。

任何想法???

我在複製目的上看到了很多主題,但沒有一個真正解決我的問題。

回答

1

下文定義了結構的實例,然後嘗試使用該名稱作爲類型:

struct { 
    char *file_extension; 
    LIBMTP_filetype_t file_type; 
} MTP_file_extension; 

如果你想那是一種類型的,將名字改爲struct之後。

struct MTP_file_extension { 
    char *file_extension; 
    LIBMTP_filetype_t file_type; 
}; 
+0

謝謝我改變它,但它仍然失敗 – Seb

相關問題