在头文件c ++中声明数组结构时出错

时间:2015-07-22 09:39:46

标签: c++ pointers new-operator

标题文件:

class SourceManager{

    typedef   struct  {
        const char  *name;
        int size ;
        const char  *src;
    }imgSources;

public:
    imgSources *   img;

    SourceManager();

};

在cpp文件中:

SourceManager::SourceManager(){

    img ={
       {  "cc",
            4,
            "aa"
        }
    };   
}

显示错误:      - 无法使用'const char [3]'类型的左值初始化'imgSources *'类型的值      - 标量初始化器周围有许多支撑

如何解决?

1 个答案:

答案 0 :(得分:0)

数据成员img被声明为具有指针类型

imgSources *   img;

所以在构造函数中你需要像

这样的东西
SourceManager::SourceManager()
{

    img = new imgSources { "cc", 4, "aa" };
    //...
}

如果需要分配结构数组,那么构造函数可能看起来像

SourceManager::SourceManager()
{

    img = new imgSources[5] { { "cc", 4, "aa" }, /* other initializers */ };
    //...
}