Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kontener dla nieokreślonych i zmiennych typów

Ostatnio zmodyfikowano 2013-04-24 09:45
Autor Wiadomość
maly
Temat założony przez niniejszego użytkownika
Kontener dla nieokreślonych i zmiennych typów
» 2013-04-24 08:53:57
Witam wszystkich. Mam problem ze znalezieniem kontenera który mógłby przechowywać bliżej nie określone typy/klasy bez wcześniejszego ukonkretnienia. Nie wiem czy zrozumiale się wyraziłem więc dam "przykład działania" o który mi chodzi.
C/C++
// dodanie czegoś
Kontener[ 0 ] = "ala";
Kontener[ 1 ] = 1;
Kontener[ 2 ] = Klasa();

// przykładowa zmiana
Kontener[ 0 ] = 1234; // było "ala"
No i teraz pytanie, czy istnieje coś o takiej funkcjonalności a jeśli nie to proszę o wskazówkę jak to zaimplementować.
P-81108
Monika90
» 2013-04-24 09:11:50
C/C++
#include <boost/any.hpp>
#include <vector>

std::vector < boost::any > kontener;
http://www.boost.org/doc/libs/1_53_0/doc/html/any.html#idp23550912
P-81110
maly
Temat założony przez niniejszego użytkownika
» 2013-04-24 09:45:46
Dziękuję, to jest właśnie to czego potrzebowałem.
Dzięki Tobie wreszcie zainstalowałem boost-a.
A tu na szybko napisany test.
C/C++
#include <iostream>
#include <boost/any.hpp>
#include <vector>

int main()
{
    std::vector < boost::any > kontener;
   
    kontener.push_back( std::string( "ala" ) );
    kontener.push_back( 1234 );
   
    std::vector < boost::any >::iterator it = kontener.begin();
    while( it != kontener.end() )
    {
        if(( * it ).type() == typeid( int ) )
             std::cout << boost::any_cast < int >( * it ) << std::endl;
        else if(( * it ).type() == typeid( std::string ) )
             std::cout << boost::any_cast < std::string >( * it ) << std::endl;
       
        ++it;
    }
    return 0;
}

//EDIT
Z ciekawości wrzuciłem kod do Borland Builder6 i też działa.
Takie info dla użytkowników tego staruszka.
P-81113
« 1 »
  Strona 1 z 1