2014-12-31 47 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

相关问题