оператор ThisClass(), вызывающий переполнение стека
-
23-08-2019 - |
Вопрос
Я хочу сохранить класс простым и не определять конструктор, чтобы я мог выполнять Pt data = {0, 5};итак, я решил, что лучший способ преобразовать Pt_t из короткого в длинный или наоборот - это сделать что-то вроде этого.
template <class T>
struct Pt_t
{
T x, y;
template <class T2> operator Pt_t<T2>() { Pt_t pt = {x, y}; return pt; }
};
Компилятору это не нравится , и он вызывает оператор Pt_t при возврате pt;таким образом, получается переполнение стека.Как мне предотвратить это?единственное решение, о котором я могу думать, - это заставить Pt_t использовать конструкторы, удаляющие Pt_t pt = {1, 2};который я предпочитаю сохранить, если смогу.
Решение
Я почти уверен, что неквалифицированный Pt_t в вашем теле функций является Pt_t<T>
, но разве ты не хочешь , чтобы это было Pt_t<T2>
?Вам нужно будет явно квалифицировать это.
Другие советы
Я незнаком с C ++, но объявляете ли вы там правильный тип в своем методе?
Разве это не должно быть Pt_t<T2>
вместо того, чтобы просто Pt_t
?