Метод определен (прямо в классе btw), но компилятор (g cc 6.3) по-прежнему говорит, что это не так:
template<OperatorId op>
class ChangeTypeExpression : public UnaryExpression {
public:
/* Ctor here... */
// The compiler complains about the destructor
virtual ~ChangeTypeExpression() {}
// ... and it doesn't like this method too
virtual string ToString(bool verbose) const {
return ...;
}
// ...
// Maybe relevant - I already don't know...
DISALLOW_COPY_AND_ASSIGN(ChangeTypeExpression);
};
Выход компилятора следует:
[ 24%] Building CXX object src/engine/executor/CMakeFiles/supersonic.dir/expression/core/regexp_expressions.cc.o
/home/asg/work/raijin/src/engine/executor/expression/core/elementary_expressions.cc:61:11: warning: ‘supersonic::{anonymous}::ChangeTypeExpression<op>::~ChangeTypeExpression() noexcept [with supersonic::OperatorId op = (supersonic::OperatorId)265u]’ declared ‘static’ but never defined [-Wunused-function]
virtual ~ChangeTypeExpression() {}
^
/home/asg/work/raijin/src/engine/executor/expression/core/elementary_expressions.cc:67:18: warning: ‘std::__cxx11::string supersonic::{anonymous}::ChangeTypeExpression<op>::ToString(bool) const [with supersonic::OperatorId op = (supersonic::OperatorId)265u]’ declared ‘static’ but never defined [-Wunused-function]
virtual string ToString(bool verbose) const {
^~~~~~~~
Оригинальный код можно найти здесь , обратите внимание, что это не мой код - ребята из Google написали его. У меня заканчиваются идеи о том, почему это может произойти, кто-нибудь знает ответ?