在头文件c ++中声明数组结构时出错
Error when declare array struct in header file c++
头文件:
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 */ };
//...
}
头文件:
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 */ };
//...
}