typedef struct _Hello
{
char mString[10];
}hello;
.H文件
class A{
void checkSize();
queue<hello> queue1;
queue<int> queue2;
};
.cpp文件
void A::checkSize()
{
queue1.size(); //a very large erroneous value
queue2.size(); 0
}
有人知道为什么queue1会给出错误的值吗?这个程序以线程方式运行,我检查了整个程序,queue1还没有在其他地方初始化。当我使queue1静态时,错误就消失了。 实际上我正在将结构的一个对象推送到队列中,它正在提供一个&#34;访问冲突写入位置&#34;。
答案 0 :(得分:0)
语法搞砸了。而不是
Struct _Hello {
char[10] mString;
} hello;
应该是
struct hello {
char mString[10];
};
(可以说,mString应该是std::string
,但一次只能做一件事)。重要的一点是:
struct
的s
- C ++区分大小写struct hello { ... };
声明了hello
类型,而不只是struct hello
。struct _Hello { ... } hello;
不会声明类型hello
,而是声明变量hello
。_Hello
是reserved identifier(请参阅页面底部),您不允许使用它,因为它是为实施保留的。哦,你在;
的课程定义之后忘记了A
。