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. Фактически я подталкивал объект структуры к очереди и предоставлял "место записи нарушения прав доступа".
Синтаксис испорчен. Вместо
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
- зарезервированный идентификатор (см. Нижнюю часть страницы), который вам запрещено использовать, поскольку он зарезервирован для реализации. О, и ты забыл ;
после определения класса A
A
в памяти и тем самым разбивает очередь, или делает то же самое для члена этого объекта, который лежит перед очередью в объекте , но мне не хватает информации, чтобы дать надежный совет.
hello
переменная (типа_Hello
). шаблонqueue
ожидает тип, а не переменную, в качестве параметра. Возможно, вы захотите прочитать оtypedef
в вашем любимом учебнике по C ++.