Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 147c589

Browse filesBrowse files
agasparovic-sabreappkins
authored andcommitted
Base classes should have virtual destructors (#55)
From https://en.cppreference.com/w/cpp/language/destructor ... Virtual destructors Deleting an object through pointer to base invokes undefined behavior unless the destructor in the base class is virtual: class Base { public: virtual ~Base() {} }; class Derived : public Base {}; Base* b = new Derived; delete b; // safe A common guideline is that a destructor for a base class must be either public and virtual or protected and nonvirtual Prevents errors like the following: INFO: From Compiling external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp: In file included from external/com_github_cpp_redis_cpp_redis/sources/core/types.cpp:23: In file included from bazel-out/darwin-fastbuild/bin/external/com_github_cpp_redis_cpp_redis/_virtual_includes/cpp_redis/cpp_redis/core/types.hpp:26: In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string:500: In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string_view:176: In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__string:56: In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:644: /Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1880:58: warning: destructor called on non-final 'cpp_redis::xmessage' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor] _LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();} ^
1 parent 53e6112 commit 147c589
Copy full SHA for 147c589

File tree

1 file changed

+4
-0
lines changed
Filter options

1 file changed

+4
-0
lines changed

‎includes/cpp_redis/impl/types.hpp

Copy file name to clipboardExpand all lines: includes/cpp_redis/impl/types.hpp
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ namespace cpp_redis {
4040
class serializer_type {
4141
public:
4242
inline serializer_type() {}
43+
44+
virtual ~serializer_type() {}
4345

4446
/**
4547
* @return the underlying string
@@ -62,6 +64,8 @@ typedef std::shared_ptr<serializer_type> serializer_ptr_t;
6264
template <typename T>
6365
class message_impl {
6466
public:
67+
virtual ~message_impl() {}
68+
6569
virtual const std::string get_id() const = 0;
6670

6771
virtual const message_impl& set_id(std::string id) = 0;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.