最近、大学の授業で C++ を使わなければなりません。私はポインターと参照の概念を認識していますが、特定の点で謙虚です。
次のクラス定義を検討してください。
class test{
public:
test(int i);
~test();
int* getint();
private:
int *asdf;
};
test::test(int i){
asdf = new int();
*asdf = i;
}
int* test::getint(){
return asdf;
}
および次のコード:
void fun1(int*& i){
*i +=1;
}
int main(){
test *a = new test(1);
fun1(a->getint());
}
g++ でコンパイルすると、エラー メッセージが表示されます。
error: invalid initialization of non-const reference of type ‘int*&’ from an rvalue of type ‘int*’
問題がどこにあるのか、次のように新しいポインターを宣言することで解決できることがわかりました。
int main(){
test *a = new test(1);
int* b = a->getint();
fun1(b);
}
しかし、戻り値を参照として直接使用する他の方法はありますか? 私の C++ コードがひどい場合は、修正してください (基本的には C++ の最初の週です)。
編集: 参照を使用するように fun1 を変更し、クラス変数の初期化を修正しました (enrico.bacis で提案されているように)