#include <iostream>
using namespace std;
class A{
private:
double price;
public:
A(double p):price(p){
}
virtual double abstractExample() = 0;
A* operator++(int dummy){
this->price = this->price + 1;
return this;
}
virtual ~A(){
}
void print(){
cout << price << endl;
}
};
class B : public A {
public:
B(int p): A(p){
}
double abstractExample(){
return 1;
}
};
int main(){
B* b = new B(5);
b->print();
b++->print();
return 0;
}
したがって、私はこの抽象クラスAを持っています。++演算子をオーバーロードしたいと思います。通常はA &演算子++(int dummy)を書くだけですが、この場合は抽象クラスなのでオブジェクトへのポインタを返す必要があります。各継承クラスに別々のコードを記述することなくこれを行う方法はありますか?抽象クラスにおけるインクリメンタル演算子のオーバーロードC++
これは5、5の代わりに、5、6
**変更前に**値を返すことが期待されているので、後置演算子のあなたの実装は、正しくありません。 – SergeyA
@SergeyA _ "後置演算子の実装が正しくありません" _はい、そうです。しかし、抽象クラスを実際どのように扱うことができるのでしょうか?それは良い質問です。 –
@πάνταῥεῖ[this](http://stackoverflow.com/questions/18172858/c-abstract-base-class-postfix-operator)はCRTPを使用しようとしています – NathanOliver