Size: a a a

2020 July 23

Д

Дмитрий in supapro.cxx
micky 🇲🇽🚜🇷🇺
свитч по этому type там кастишь и работаешь
окей, буду я кастить к инту и возвращать его, буду кастить к std::string и возвращать... А какой тип возвращаемого значение в итоге получается ?))
источник

CD

Constantine Drozdov in supapro.cxx
micky 🇲🇽🚜🇷🇺
подскажите пожалуйста есть задача:
функцию
CreateFigure()
, которая в зависимости от содержимого входного потока создаёт
shared_ptr<Rect>
,
shared_ptr<Triangle>
или
shared_ptr<Circle>
.
class Circle, class Rect, class Triangle
наследники класса
myClass

как можно это реализовать? три перегрузки функции? или возвращаемый тип
shared_ptr<myClass>
?

как примерно это должно выглядеть?
остается офк вопрос, почему shared_ptr, а не unique_ptr
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Дмитрий
окей, буду я кастить к инту и возвращать его, буду кастить к std::string и возвращать... А какой тип возвращаемого значение в итоге получается ?))
а что это за функция которая возвращает не пойми что?
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Constantine Drozdov
остается офк вопрос, почему shared_ptr, а не unique_ptr
задача так поставлена
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Дмитрий
окей, буду я кастить к инту и возвращать его, буду кастить к std::string и возвращать... А какой тип возвращаемого значение в итоге получается ?))
а сделать структуру и ее возвращать нельзя?
источник

ip

illya palkin in supapro.cxx
micky 🇲🇽🚜🇷🇺
подскажите пожалуйста есть задача:
функцию
CreateFigure()
, которая в зависимости от содержимого входного потока создаёт
shared_ptr<Rect>
,
shared_ptr<Triangle>
или
shared_ptr<Circle>
.
class Circle, class Rect, class Triangle
наследники класса
myClass

как можно это реализовать? три перегрузки функции? или возвращаемый тип
shared_ptr<myClass>
?

как примерно это должно выглядеть?
factory method / abstract factory
источник

Д

Дмитрий in supapro.cxx
Можно конечно все мои типы в структуру запихнуть и обернуть их в  std::optional, а потом в свитче туда данные пихать... Но наверное это маразм
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Дмитрий
Можно конечно все мои типы в структуру запихнуть и обернуть их в  std::optional, а потом в свитче туда данные пихать... Но наверное это маразм
если хочешь заниматься этим, ты можешь создать тип data64 8 байт размером, она может быть или указателем на стринг или интом или чем хочешь
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
и возвращать пару <type,data64>
источник

Д

Дмитрий in supapro.cxx
оно щас так и есть
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
по type определять шо тебе пришло и последовательность битов представлять как хочется
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Дмитрий
оно щас так и есть
а ты хочешь по другому?
источник

Д

Дмитрий in supapro.cxx
вот именно, что как хочется, а мне хочется кастить эти байты по типу enum в рантайме
источник

Д

Дмитрий in supapro.cxx
типа если enum это int, то кастим в int
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Дмитрий
вот именно, что как хочется, а мне хочется кастить эти байты по типу enum в рантайме
ну на этом мои полномочия все
источник

CD

Constantine Drozdov in supapro.cxx
Дмитрий
Можно конечно все мои типы в структуру запихнуть и обернуть их в  std::optional, а потом в свитче туда данные пихать... Но наверное это маразм
О чем ты вообще говоришь
источник

CD

Constantine Drozdov in supapro.cxx
Что ты хочешь сделать
источник

CD

Constantine Drozdov in supapro.cxx
micky 🇲🇽🚜🇷🇺
а что это за функция которая возвращает не пойми что?
или тебе пример нужен?
std::shared_ptr<Shape> f(int x) {
      if (x == 0) return std::make_shared<Triangle>();
      if (x == 1) return std::make_shared<Square>();
      if (x == 2) return std::make_shared<Rectangle>();
      return nullptr;
}
источник

m🇲

micky 🇲🇽🚜🇷🇺... in supapro.cxx
Constantine Drozdov
или тебе пример нужен?
std::shared_ptr<Shape> f(int x) {
      if (x == 0) return std::make_shared<Triangle>();
      if (x == 1) return std::make_shared<Square>();
      if (x == 2) return std::make_shared<Rectangle>();
      return nullptr;
}
что такое Shape?
источник

ip

illya palkin in supapro.cxx
Constantine Drozdov
или тебе пример нужен?
std::shared_ptr<Shape> f(int x) {
      if (x == 0) return std::make_shared<Triangle>();
      if (x == 1) return std::make_shared<Square>();
      if (x == 2) return std::make_shared<Rectangle>();
      return nullptr;
}
Только  вместо х лучше enum class Shape { Triangle, Square, Rectangle }
источник