Witam wszystkich, to mój pierwszy post, więc proszę o wyrozumiałość :P
Otóż mam dwa pytania a propos VisualStudio:
dlaczego gdy tylko rozpocznę pisanie szablonu klasy, wyłącza się "sprawdzanie poprawności"?
z wejściem w ekran linijki template <class typename_Ty> ...
kompilator nie zareaguje nawet na wulgaryzmy w jego stronę (tak dla zobrazowania jego obojętności..)
drugie pytanie całkowicie new_bie- piszę program w kilku modułach i niestety czasami aby kompilator "zaskoczył" zmiany w jakimś pliku pobocznym, muszę dokonać (nawet idiotycznej) zmiany czegokolwiek w pliku głównym, dopiero wtedy automatycznie kompilator kompiluje całość od nowa. Da się to jakoś inaczej osiągnąć? Jakieś ustawienia typu: kompiluj zawsze całość?
A teraz pytanie na temat konkretnego problemu..
W ramach treningu na szablonach klas napisałem prostą klasę działającą jak std::vector;
po paru problemach wszystko działa jak należy, z wyjątkiem..
- fragment kodu: *
template <class typename_Ty>
class my_vector
{
..
public:
my_vector(int size = 0); // konstruktor z możliwością podania rozmiaru, po prostu tworzy tablicę dynamicznie z jakąś tam nadwyżką w pamięci- nieistotne (chyba);
..
};
w czym problem: otóż.. wg kompilatora, całkiem normalne i bezproblemowe jest wykonanie istrukcji:
my_vector<double> test;
test = 5; // WEKTOR = 5 !!!!
Idąc breakpointami zauważyłem, że traktuje tą linijkę w ten sposób:
test = my_vector(5);
a więc.. kto go upoważnił do tej bezprawnej konwersji?? i co najważniejsze.. jak to zatrzymać.
Dla przykładu:
jeśli zrobimy vector<double> test2;
test2 = 5; // wyswietli sie komunikat o bledzie: no operator "=" matches these operands.
tak jak być powinno..