Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MinGW ругается сам на себя при использовании многомерного контейнера

87
24 марта 2009 года
Kogrom
2.7K / / 02.02.2008
Использую Code::Blocks 8.2, MinGW(gcc-g++-3.4.5-20060117-1-vista).

При компиляции следующего кода:
Код:
#include <vector>
#include <string>

using namespace std;

vector<vector<string> > Foo()
{
    vector<vector<string> > vs(15, vector<string>(15, "test"));
    return vs;
}

int main()
{
    vector<vector<string> > vvs = Foo();
    return 0;
}

компилятор выдает варнинг:

C:\Program Files\CodeBlocks\MINGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_uninitialized.h|82|warning: '__cur' might be used uninitialized in this function|

То есть ругается на собственный заголовочный файл. Кто-нибудь может сказать, что ему не нравится?

Добавлено позже:
Если поменять код на следующий:
Код:
#include <vector>
#include <string>

using namespace std;

void Foo(vector<vector<string> > &vvs)
{
    vvs.resize(15, vector<string>(15, "test"));
}

int main()
{
    vector<vector<string> > vvs;
    Foo(vvs);
    return 0;
}

то выдается 12 подобных варнингов...
87
24 марта 2009 года
Kogrom
2.7K / / 02.02.2008
Проверил на других компиляторах (Microsoft Visual C++ 2008 Express Edition, и альтернативная сборка TDM/MinGW) - такого предупреждения не выдается. Похоже, это некачественная реализация STL в текущей версии MinGW...
590
25 марта 2009 года
Gigahard
223 / / 03.04.2006
Извиняюсь, что не совсем по теме... Но недавно вот решил протестить код на MinGW и столкнулся с тем, что он не хавает предварительные объявления классов.
Эт я чего не понял или MinGW такой?
87
25 марта 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Gigahard
Извиняюсь, что не совсем по теме... Но недавно вот решил протестить код на MinGW и столкнулся с тем, что он не хавает предварительные объявления классов.
Эт я чего не понял или MinGW такой?


Сейчас под рукой нет книг, чтобы проверить, как правильно должно быть. Но следующий код работает:

Код:
#include <iostream>

class ClassA;

class ClassB
{
public:
    ClassA* a;
    ClassB(ClassA* aa):a(aa){}
};

class ClassA
{
public:
    void Print(){std::cout << "ClassA";}
};


int main()
{
    ClassB b(new ClassA);
    b.a->Print();
    delete b.a;
    return 0;
}


Если использовать не указатель, а сам объект, то компилятор ругается.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог