Предложение по первому предварительному ответу: не делайте этого.
Предложение по второму предварительному ответу: избегайте самостоятельного выделения / освобождения памяти и используйте контейнеры STL и / или интеллектуальные указатели (std::unique_ptr
, std::shared_ptr
, et c.) вместо
Ответ: нет, насколько я знаю, вы не можете написать что-то вроде
int * myInt, myOtherInt = new int;
, которое выделяет обе переменные (с разными выделенными указателями).
Но вы можете заключить указатели в класс или структуру, которые автоматически выделяют содержащийся указатель (и, возможно, уничтожают его в деструкторе).
Просто для удовольствия ... если вы пишете Обертка выглядит следующим образом:
template <typename T>
struct wrappPnt
{
T * pnt = new T{};
T & operator * ()
{ return *pnt; }
T const & operator * () const
{ return *pnt; }
~wrappPnt ()
{ delete pnt; }
};
Вы можете написать свой Annonce
таким образом
struct Annonce
{
wrappPnt<std::string> titre, intro, description;
wrappPnt<std::vector<std::vector<std::string>>> imgUrls;
wrappPnt<long double> prix;
Annonce (std::string Titre, long double Prix, std::string Intro,
std::string Description,
std::vector<std::vector<std::string>> ImgUrls)
{
*titre = std::move(Titre);
*prix = Prix;
*intro = std::move(Intro);
*description = std::move(Description);
*imgUrls = std::move(ImgUrls);
}
};
Первое сообщение Ответ Предложение: не делайте этого.
Второе сообщение Ответ Предложение: избегайте самостоятельного выделения / освобождения памяти и используйте контейнеры STL и / или умные указатели (std::unique_ptr
, std::shared_ptr
, et c.) Вместо