klasa ze zwracalnym typem

0

nie wiem za bardzo jak to powiedzieć... mam szablon klasy i chcę go przerobić żeby działał tak samo ale był jednocześnie tablicą zmiennych podanych przy deklaracji...

0
template<typename typ>class kontener
{
private:
    typ jakiescos;
    jakieś zmienne
public:
    jakieś funkcje i konstruktory
}; 

teraz chcę żeby jak zrobię

kontener<int> kontener;
kontener=5;
a=kontener; 

to a było równe 5 i kontener.jakiescos miało 5... czyli po prostu chcę, żeby klasa funkcjonowała jako zmienna podanego typu i miała moje funkcje(tak ogólnie to to ma działać jak tablica podanego typu ale to się zrobi potem)

0

Przeciąż odpowiednie operatory. Ew. podziedzicz z jakiegoś STLowego kontenera, ale miej na uwadze, że nie mają one wirtualnego destruktora.

0

Może podaj przykład użycia, bo w tej chwili wygląda jak próba przyszycia piątej łapy do pleców psa. To co podałeś sugeruje raczej 2 funkcje setXXX() i getXXX() a nie jakieś udziwnione przeciążone operatory przypisania czy konwersji. Coś jakby vector::size() i vector::resize().

1
template<typename typ>class kontener
{
private:
    typ jakiescos;
    jakieś zmienne
public:
    jakieś funkcje i konstruktory

    kontener<typ> & operator=(const typ& x) {
        ………
        jakiescos = x;
        ………
        return *this;
    }
};
0

Na lekcji informatyki sprawdzałem temat operatorów i trochę ogarniam... ale jak teraz zrobić z mojej klasy tablicę zmiennych type a nie jednej zmiennej type?

1

przeladuj operator [] tak by sie dostawal do wektora w sensie

obiekt[index] bedzie znaczyl
(to jest pseudokod. Nie bedzie sie kompilowac pokazuje jedynie idee)

operator[] (int index)
{
  return kontener[index];
}
1
#include <iostream>
#include <vector>

template<typename T>
struct Container : public T
{
    using T::T;   
};

int main()
{
    Container<std::vector<int>> c { 1, 2, 3, 4 };
    std::cout << c[3];

    return 0;
}

http://melpon.org/wandbox/permlink/zn579hII8jo4KgAU

wyjdź od tego i baw się resztą

0

po paru próbach doszedłem do tego:

namespace niktech
{
    template<typename type>class vector
    {
    private:
        int cellcount;
    public:
        type *container;
        vector()
        {
            cellcount=1;
            container=NULL;
        }
        vector(int celcount)
        {
            cellcount=celcount;
            container=new type[cellcount];
        }
        int size()
        {
            if (sizeof(container)>0)
            {
                return sizeof(container)/sizeof(container[0]);
            }
            else
            {
                return 0;
            }
        }
        type & operator[] (const int index)
        {
            return container[index];
        }
    };
};

ale jak zrobię:

vector wektor;
int i=0;
wektor[0]=i; 

program się kompiluje i wywala błąd jakiś...

0

bo przepisujesz cos do nulla. ustawiles w konstruktorze swoj pointer na NULL przeciez...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0