私はクラステンプレートを持っています。これは単純化されており、少し似ています:
template<typename T>
class A
{
protected:
T _data;
public:
A* operator%(const A &a2) const
{
A * ptr;
ptr = new A(this->_data % a2._data);
return ptr;
}
};
そして、このクラスから継承する別のクラス:
class B : public A<double>
{
// ...
};
しかし、私がそれを行うと、コンパイラは次のように言います:
invalid operands of types ‘double’ and ‘const double’ to binary ‘operator%’
operator%
次に、doubleとfloatに特殊化しようとしましたが、これらの型では % が不可能に思えるためです。クラス A宣言の後に次のコードを追加しました。
template<>
A* A<double>::operator%(const A &a2) const
{
A * ptr;
ptr = new A((uint32_t)this->_data % (uint32_t)a2._data);
return ptr;
}
そして、私はこのエラーを受け取ります、私は実際には理由を理解していません...
In function `A<double>::operator%(A const&) const':
./include/A.hpp:102: multiple definition of `A<float>::operator%(A const&) const'
src/Processor.o:./include/A.hpp:102: first defined here