Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) base class 'struct QtPrivate::AlignOf_WorkaroundForI386Abi<double>' has a non-virtual destructor

 

Compile error.

 

 

 

 

 

Full error message

 

 

06:27:48: Running steps for project ToolHometrainerConsole...
06:27:48: Starting: "/usr/bin/qmake" /home/richel/ProjectRichelBilderbeek/Tools/ToolHometrainer/ToolHometrainerConsole.pro -r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
06:27:50: The process "/usr/bin/qmake" exited normally.
06:27:50: Starting: "/usr/bin/make"
g++ -c -pipe -std=c++11 -Wall -Wextra -Weffc++ -Werror -g -Wall -W -D_REENTRANT -fPIE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_CORE_LIB -I/usr/share/qt5/mkspecs/linux-g++ -I../ToolHometrainer -I../../Classes/CppAbout -I../../Classes/CppExercise -I../../Classes/CppFileIo -I../../Classes/CppHelp -I../../Classes/CppMenuDialog -I../../Classes/CppMultipleChoiceQuestion -I../../Classes/CppMultipleChoiceQuestionDialog -I../../Classes/CppOpenQuestion -I../../Classes/CppOpenQuestionDialog -I../../Classes/CppQuestion -I../../Classes/CppQtQuestionDialog -I../../Classes/CppRichelBilderbeekProgram -I../../Classes/CppTrace -I../ToolHometrainer -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I. -I. -o qrc_ToolHometrainer.o qrc_ToolHometrainer.cpp
In file included from qrc_ToolHometrainer.cpp:9:0:
/usr/include/qt5/QtCore/qglobal.h:403:24: error: base class 'struct QtPrivate::AlignOf_WorkaroundForI386Abi<double>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qglobal.h:404:24: error: base class 'struct QtPrivate::AlignOf_WorkaroundForI386Abi<long long int>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qglobal.h:405:24: error: base class 'struct QtPrivate::AlignOf_WorkaroundForI386Abi<long long unsigned int>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qglobal.h: In instantiation of 'struct QIntegerForSizeof<void*>':
/usr/include/qt5/QtCore/qglobal.h:435:33:   required from here
/usr/include/qt5/QtCore/qglobal.h:434:27: error: base class 'struct QIntegerForSize<4>' has a non-virtual destructor [-Werror=effc++]
In file included from /usr/include/qt5/QtCore/qflags.h:48:0,
                 from /usr/include/qt5/QtCore/qglobal.h:1094,
                 from qrc_ToolHometrainer.cpp:9:
/usr/include/qt5/QtCore/qtypetraits.h:221:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:222:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:223:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:224:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:231:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:233:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:234:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:235:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:236:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:237:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:238:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:243:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:244:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:253:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:254:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h:255:19: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<unsigned char>':
/usr/include/qt5/QtCore/qtypetraits.h:481:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<signed char>':
/usr/include/qt5/QtCore/qtypetraits.h:482:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<unsigned char> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<unsigned char>'
/usr/include/qt5/QtCore/qtypetraits.h:484:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<unsigned char>':
/usr/include/qt5/QtCore/qtypetraits.h:484:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<unsigned char> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<signed char> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<signed char>'
/usr/include/qt5/QtCore/qtypetraits.h:485:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<signed char>':
/usr/include/qt5/QtCore/qtypetraits.h:485:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<signed char> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<short unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:487:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<short int>':
/usr/include/qt5/QtCore/qtypetraits.h:488:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<short unsigned int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<short unsigned int>'
/usr/include/qt5/QtCore/qtypetraits.h:490:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<short unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:490:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<short unsigned int> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<short int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<short int>'
/usr/include/qt5/QtCore/qtypetraits.h:491:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<short int>':
/usr/include/qt5/QtCore/qtypetraits.h:491:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<short int> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:493:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<int>':
/usr/include/qt5/QtCore/qtypetraits.h:494:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<unsigned int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<unsigned int>'
/usr/include/qt5/QtCore/qtypetraits.h:496:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:496:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<unsigned int> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<int>'
/usr/include/qt5/QtCore/qtypetraits.h:497:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<int>':
/usr/include/qt5/QtCore/qtypetraits.h:497:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<int> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<long long unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:499:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_unsigned<long long int>':
/usr/include/qt5/QtCore/qtypetraits.h:500:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:473:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<long long unsigned int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<long long unsigned int>'
/usr/include/qt5/QtCore/qtypetraits.h:502:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, false>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<long long unsigned int>':
/usr/include/qt5/QtCore/qtypetraits.h:502:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<long long unsigned int> >' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::not_<QtPrivate::is_unsigned<long long int> >':
/usr/include/qt5/QtCore/qtypetraits.h:478:8:   required from 'struct QtPrivate::is_signed<long long int>'
/usr/include/qt5/QtCore/qtypetraits.h:503:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:463:8: error: base class 'struct QtPrivate::integral_constant<bool, true>' has a non-virtual destructor [-Werror=effc++]
/usr/include/qt5/QtCore/qtypetraits.h: In instantiation of 'struct QtPrivate::is_signed<long long int>':
/usr/include/qt5/QtCore/qtypetraits.h:503:1:   required from here
/usr/include/qt5/QtCore/qtypetraits.h:478:8: error: base class 'struct QtPrivate::not_<QtPrivate::is_unsigned<long long int> >' has a non-virtual destructor [-Werror=effc++]
cc1plus: all warnings being treated as errors
make: *** [qrc_ToolHometrainer.o] Error 1
06:29:17: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project ToolHometrainerConsole (kit: Desktop)
When executing step 'Make'
06:29:18: Elapsed time: 01:29.

 

 

 

 

 

Cause

 

The following code caused this compile error:

 

#include <vector>

struct MyClass {};

int main()
{
  const int size = 10; //Or other positive int
  std::vector<MyClass*> v(size,0);
}

 

IDE: C++ Builder 6.0

Compiler: Borland BCC32.EXE version 6.0.10.157

Project type: Console

 

The zero denotes that the MyClass pointer is uninitialized. The compiler, however, believes this zero denotes an integer value.

 

The code where the compiler takes you, in _algobase.h:

 

template <class _OutputIter, class _Size, class _Tp>
_STLP_INLINE_LOOP
_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value) {
  _STLP_FIX_LITERAL_BUG(__first)
  for ( ; __n > 0; --__n, ++__first)
    *__first = __value; //THIS LINE
  return __first;
}

 

 

 

 

 

Solution

 

The text of /usr/include/qt5/QtCore/qglobal.h must be changed.

 

//Add ignore warnings directly in beginning
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"

//Add ignore warnings directly before end
#pragma GCC diagnostic pop

 

Or use this script:

 

#!/bin/bash
FILE="/usr/include/qt5/QtCore/qglobal.h"
#FILE="test.txt"

echo "#pragma GCC diagnostic ignored \"-Weffc++\""|cat - $FILE > /tmp/out && mv /tmp/out $FILE
echo "#pragma GCC diagnostic push"|cat - $FILE > /tmp/out && mv /tmp/out $FILE
echo "#pragma GCC diagnostic pop" >> $FILE

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict