我正在編寫代碼,但是當編譯時,由於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是不可用的。
任何想法???
我在複製目的上看到了很多主題,但沒有一個真正解決我的問題。
謝謝我改變它,但它仍然失敗 – Seb