оператор ThisClass(), вызывающий переполнение стека

StackOverflow https://stackoverflow.com/questions/386252

  •  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 ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top