Witam,
ostatnio zabrałem się za naukę w C++. Postanowiłem napisać prostą klasę wskaźnika, z użyciem szablonów. Program buduje się poprawnie, zero zastrzeżeń od kompilatora.
Jednak podczas uruchamiania, wyświetla się komunikat:
RUN FAILED (exit value 1, total time: 1s)
Problem występuje jedynie wtedy, gdy jako argument konstruktora przekazuję wartość za pomocą operatora &. Gdy przekazuję wskaźnik z pamięcią alokowaną dynamicznie (za pomocą operatora new), wszystko przebiega poprawnie. Czy wie ktoś, czemu tak się dzieje i jak można temu zaradzić?
Korzystam z Netbeans z kompilatorem cygwin.
Z góry dziękuję za pomoc.
Kod aplikacji:
//smart_pointer.hpp
#ifndef TEMPLATE_HPP
#define TEMPLATE_HPP
template <typename T> class smart_pointer{
private:
T* object;
public:
T* getObject(){
return object;
}
void setObject(T* t){
this->object = t;
}
smart_pointer(T* t){
setObject(t);
}
smart_pointer(T t){
setObject(&t);
}
~smart_pointer(){
delete object;
}
T* operator ->(){
return object;
}
T operator *(){
return *object;
}
};
#endif /* TEMPLATE_HPP */
//main.cpp
#include <iostream>
#include "smart_pointer.hpp"
int main() {
int i = 5;
smart_pointer<int> pointer(&i);
std::cout<<*pointer;
return 0;
}