In file included from main.cpp:17:0:
figure.h: In function 'auto CreateFigure(std::istringstream&)':
figure.h:54:45: error: invalid new-expression of abstract class type 'Rect'
Rect* rect = new Rect {width, height};
^
figure.h:28:7: note: because the following virtual functions are pure within 'Rect':
class Rect : public Figure {
^~~~
figure.h:8:31: note: virtual const string Figure::Name() const
virtual const std::string Name() const = 0;
^~~~
figure.h:9:26: note: virtual const double Figure::Perimeter() const
virtual const double Perimeter() const = 0;
^~~~~~~~~
figure.h:10:26: note: virtual const double Figure::Area() const
virtual const double Area() const = 0;
^~~~
figure.h:63:55: error: invalid new-expression of abstract class type 'Triangle'
Triangle* triangle = new Triangle {a, b, c};
^
figure.h:13:7: note: because the following virtual functions are pure within 'Triangle':
class Triangle : public Figure {
^~~~~~~~
figure.h:8:31: note: virtual const string Figure::Name() const
virtual const std::string Name() const = 0;
^~~~
figure.h:9:26: note: virtual const double Figure::Perimeter() const
virtual const double Perimeter() const = 0;
^~~~~~~~~
figure.h:10:26: note: virtual const double Figure::Area() const
virtual const double Area() const = 0;
^~~~
figure.h:65:20: error: inconsistent deduction for auto return type: 'std::shared_ptr<Rect>' and then 'std::shared_ptr<Triangle>'
return out;
^~~
figure.h:65:20: error: no matching function for call to 'std::shared_ptr<Rect>::shared_ptr(std::shared_ptr<Triangle>)'
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:352:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Tp>&, std::nothrow_t) [with _Tp = Rect]
shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:352:7: note: candidate expects 2 arguments, 1 provided
/usr/include/c++/7/bits/shared_ptr.h:342:2: note: candidate: template<class _Alloc, class ... _Args> std::shared_ptr<_Tp>::shared_ptr(std::_Sp_make_shared_tag, const _Alloc&, _Args&& ...)
shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:342:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: candidate expects at least 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:294:17: note: candidate: constexpr std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t) [with _Tp = Rect; std::nullptr_t = std::nullptr_t]
constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:294:17: note: no known conversion for argument 1 from 'std::shared_ptr<Triangle>' to 'std::nullptr_t'
/usr/include/c++/7/bits/shared_ptr.h:286:2: note: candidate: template<class _Yp, class _Del, std::shared_ptr<Rect>::_Constructible<std::unique_ptr<_Tp, _Dp>, std::__sp_array_delete>* <anonymous> > std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:286:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: 'std::shared_ptr<Triangle>' is not derived from 'std::unique_ptr<_Tp, _Dp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:277:2: note: candidate: template<class _Yp, class _Del, class> std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:277:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: 'std::shared_ptr<Triangle>' is not derived from 'std::unique_ptr<_Tp, _Dp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:270:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Up>&&)
shared_ptr(auto_ptr<_Yp>&& __r);
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:270:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: 'std::shared_ptr<Triangle>' is not derived from 'std::auto_ptr<_Up>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:265:11: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Yp>&)
explicit shared_ptr(const weak_ptr<_Yp>& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:265:11: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: 'std::shared_ptr<Triangle>' is not derived from 'const std::weak_ptr<_Tp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:253:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Yp>&&)
shared_ptr(shared_ptr<_Yp>&& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:253:2: note: template argument deduction/substitution failed:
/usr/include/c++/7/bits/shared_ptr.h:244:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = Rect]
shared_ptr(shared_ptr&& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:244:7: note: no known conversion for argument 1 from 'std::shared_ptr<Triangle>' to 'std::shared_ptr<Rect>&&'
/usr/include/c++/7/bits/shared_ptr.h:236:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&)
shared_ptr(const shared_ptr<_Yp>& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:236:2: note: template argument deduction/substitution failed:
/usr/include/c++/7/bits/shared_ptr.h:224:2: note: candidate: template<class _Yp> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&, std::shared_ptr<_Tp>::element_type*)
shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:224:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: candidate expects 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:202:2: note: candidate: template<class _Deleter, class _Alloc> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter, _Alloc)
shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:202:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: candidate expects 3 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:183:2: note: candidate: template<class _Yp, class _Deleter, class _Alloc, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter, _Alloc)
shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:183:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: mismatched types '_Yp*' and 'std::shared_ptr<Triangle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:163:2: note: candidate: template<class _Deleter> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter)
shared_ptr(nullptr_t __p, _Deleter __d)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:163:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: candidate expects 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:146:2: note: candidate: template<class _Yp, class _Deleter, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter)
shared_ptr(_Yp* __p, _Deleter __d)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:146:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: mismatched types '_Yp*' and 'std::shared_ptr<Triangle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:129:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*)
shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:129:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:65:20: note: mismatched types '_Yp*' and 'std::shared_ptr<Triangle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:119:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp>&) [with _Tp = Rect]
shared_ptr(const shared_ptr&) noexcept = default;
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:119:7: note: no known conversion for argument 1 from 'std::shared_ptr<Triangle>' to 'const std::shared_ptr<Rect>&'
/usr/include/c++/7/bits/shared_ptr.h:117:17: note: candidate: constexpr std::shared_ptr<_Tp>::shared_ptr() [with _Tp = Rect]
constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:117:17: note: candidate expects 0 arguments, 1 provided
In file included from main.cpp:17:0:
figure.h:70:47: error: invalid new-expression of abstract class type 'Circle'
Circle* circle = new Circle {r};
^
figure.h:38:7: note: because the following virtual functions are pure within 'Circle':
class Circle : public Figure {
^~~~~~
figure.h:8:31: note: virtual const string Figure::Name() const
virtual const std::string Name() const = 0;
^~~~
figure.h:9:26: note: virtual const double Figure::Perimeter() const
virtual const double Perimeter() const = 0;
^~~~~~~~~
figure.h:10:26: note: virtual const double Figure::Area() const
virtual const double Area() const = 0;
^~~~
figure.h:72:24: error: inconsistent deduction for auto return type: 'std::shared_ptr<Rect>' and then 'std::shared_ptr<Circle>'
return out;
^~~
figure.h:72:24: error: no matching function for call to 'std::shared_ptr<Rect>::shared_ptr(std::shared_ptr<Circle>)'
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:352:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Tp>&, std::nothrow_t) [with _Tp = Rect]
shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:352:7: note: candidate expects 2 arguments, 1 provided
/usr/include/c++/7/bits/shared_ptr.h:342:2: note: candidate: template<class _Alloc, class ... _Args> std::shared_ptr<_Tp>::shared_ptr(std::_Sp_make_shared_tag, const _Alloc&, _Args&& ...)
shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:342:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: candidate expects at least 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:294:17: note: candidate: constexpr std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t) [with _Tp = Rect; std::nullptr_t = std::nullptr_t]
constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:294:17: note: no known conversion for argument 1 from 'std::shared_ptr<Circle>' to 'std::nullptr_t'
/usr/include/c++/7/bits/shared_ptr.h:286:2: note: candidate: template<class _Yp, class _Del, std::shared_ptr<Rect>::_Constructible<std::unique_ptr<_Tp, _Dp>, std::__sp_array_delete>* <anonymous> > std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:286:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: 'std::shared_ptr<Circle>' is not derived from 'std::unique_ptr<_Tp, _Dp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:277:2: note: candidate: template<class _Yp, class _Del, class> std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:277:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: 'std::shared_ptr<Circle>' is not derived from 'std::unique_ptr<_Tp, _Dp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:270:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Up>&&)
shared_ptr(auto_ptr<_Yp>&& __r);
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:270:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: 'std::shared_ptr<Circle>' is not derived from 'std::auto_ptr<_Up>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:265:11: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Yp>&)
explicit shared_ptr(const weak_ptr<_Yp>& __r)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:265:11: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: 'std::shared_ptr<Circle>' is not derived from 'const std::weak_ptr<_Tp>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:253:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Yp>&&)
shared_ptr(shared_ptr<_Yp>&& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:253:2: note: template argument deduction/substitution failed:
/usr/include/c++/7/bits/shared_ptr.h:244:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = Rect]
shared_ptr(shared_ptr&& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:244:7: note: no known conversion for argument 1 from 'std::shared_ptr<Circle>' to 'std::shared_ptr<Rect>&&'
/usr/include/c++/7/bits/shared_ptr.h:236:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&)
shared_ptr(const shared_ptr<_Yp>& __r) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:236:2: note: template argument deduction/substitution failed:
/usr/include/c++/7/bits/shared_ptr.h:224:2: note: candidate: template<class _Yp> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&, std::shared_ptr<_Tp>::element_type*)
shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:224:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: candidate expects 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:202:2: note: candidate: template<class _Deleter, class _Alloc> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter, _Alloc)
shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:202:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: candidate expects 3 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:183:2: note: candidate: template<class _Yp, class _Deleter, class _Alloc, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter, _Alloc)
shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:183:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: mismatched types '_Yp*' and 'std::shared_ptr<Circle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:163:2: note: candidate: template<class _Deleter> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter)
shared_ptr(nullptr_t __p, _Deleter __d)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:163:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: candidate expects 2 arguments, 1 provided
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:146:2: note: candidate: template<class _Yp, class _Deleter, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter)
shared_ptr(_Yp* __p, _Deleter __d)
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:146:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: mismatched types '_Yp*' and 'std::shared_ptr<Circle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:129:2: note: candidate: template<class _Yp, class> std::shared_ptr<_Tp>::shared_ptr(_Yp*)
shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:129:2: note: template argument deduction/substitution failed:
In file included from main.cpp:17:0:
figure.h:72:24: note: mismatched types '_Yp*' and 'std::shared_ptr<Circle>'
return out;
^~~
In file included from /usr/include/c++/7/memory:81:0,
from main.cpp:12:
/usr/include/c++/7/bits/shared_ptr.h:119:7: note: candidate: std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp>&) [with _Tp = Rect]
shared_ptr(const shared_ptr&) noexcept = default;
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:119:7: note: no known conversion for argument 1 from 'std::shared_ptr<Circle>' to 'const std::shared_ptr<Rect>&'
/usr/include/c++/7/bits/shared_ptr.h:117:17: note: candidate: constexpr std::shared_ptr<_Tp>::shared_ptr() [with _Tp = Rect]
constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { }
^~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:117:17: note: candidate expects 0 arguments, 1 provided
|