头文件:

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 *'的值
-标量初始化程序周围的括号过多

如何解决?

最佳答案

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

imgSources *   img;

所以在构造函数中,您需要类似
SourceManager::SourceManager()
{

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

如果您需要分配结构的数组,则构造函数可以如下所示
SourceManager::SourceManager()
{

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

关于c++ - 在头文件C++中声明数组结构时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31559404/

10-10 16:24