У меня есть класс-оболочка для int с именем intWrapper
и функция addN
, которая добавляет два числа, определяемых следующим образом:
intWrapper* addN(intWrapper *first, intWrapper *second)
{
intWrapper c;
c.setData(first->getData() + second->getData());
return &c;
}
Затем в функции main () я делаю это:
intWrapper first(20), second(40);
intWrapper* t = addN(&first, &second);
cout << (*t).getData() << endl;
В Dev-c ++ (MingW32) это выполняется должным образом и выводит значение 60
, но в Visual C ++ я получаю значение -858993460
.
Однако, если я использую ключевое слово new для создания нового объекта внутри функции addN, оно выводит 60
также в Visual C ++. Я заинтригован относительно того, почему это происходит. Есть мысли?
Полный код здесь:
#include <iostream>
using namespace std;
template<typename T, T defaultValue>
class Wrapper
{
private: T n_;
public:
Wrapper(T n = defaultValue) : n_(n) {}
T getData()
{
return n_;
}
void setData(T n)
{
n_ = n;
}
};
typedef Wrapper<int, 47> intWrapper;
intWrapper* addN(intWrapper *first, intWrapper *second)
{
intWrapper c;
c.setData(first->getData() + second->getData());
return &c;
}
int main()
{
intWrapper p;
cout << p.getData() << endl;
intWrapper first(20), second(40);
intWrapper* t = addN(&first, &second);
cout << (*t).getData() << endl;
system("PAUSE");
return 1;
}