struct类型的队列给出了错误

时间:2015-01-01 06:07:32

标签: c++ visual-studio queue

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;。

1 个答案:

答案 0 :(得分:0)

语法搞砸了。而不是

Struct _Hello {
  char[10] mString;
} hello;

应该是

struct hello {
  char mString[10];
};

(可以说,mString应该是std::string,但一次只能做一件事)。重要的一点是:

    带有小写struct
  • s - C ++区分大小写
  • 数组声明的范围位于错误的位置。
  • 与C不同,struct hello { ... };声明了hello类型,而不只是struct hello
  • 与C类似,struct _Hello { ... } hello;不会声明类型hello,而是声明变量hello
  • _Helloreserved identifier(请参阅页面底部),您不允许使用它,因为它是为实施保留的。

哦,你在;的课程定义之后忘记了A