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

Ваш аккаунт

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

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

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

С++; template; gcc находит ошибки

394
23 мая 2009 года
MegaMozg
317 / / 18.03.2006
Приветствую. Написал шаблонную (template) функцию нахождения всех подмножеств множества. В Visual Studio 2005 компилируется без проблем, а gcc выдает сообщения:
 
Код:
subset.cpp: In function ‘void getSubsets(std::vector<T, std::allocator<_T2> >*)’:
subset.cpp:10: ошибка: нет декларации ‘bv’ в этой области видимости
subset.cpp:10: ошибка: некорректный аргумент шаблона 1
subset.cpp:10: ошибка: некорректный аргумент шаблона 1
subset.cpp:10: ошибка: некорректный аргумент шаблона 2

Вот код:
Код:
#include<iostream>
#include<vector>
#include<bitset>
#include<cmath>

template<int c/*мощность множества*/, class T>
void getSubsets(std::vector<T>* pv)
{
    int bc;                                     // мощность универсума
    std::vector<std::bitset<c>> bv;             // будем хранить битовые наборы

    bc = pow(2.0, c);
   
    // генерация кодов
    for(int i = 0; i < bc; ++i)
        bv.push_back(std::bitset<c>(i));
   
    //считывание и вывод результата
    for(int i = 0; i < bc; ++i)
    {
        for(int j = 0; j < c; ++j)
        {
            if(bv.test(j))
            {
                std::cout << pv ->at(j) << '\t';
            }
        }
        std::cout << std::endl;
    }
}

int main()
{
    std::vector<int> v;
   
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
   
    getSubsets<3>(&v);
}


Что "не нравится" gcc?
260
23 мая 2009 года
Ramon
1.1K / / 16.08.2003
 
Код:
std::vector< std::bitset<c> > bv;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог