質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1783閲覧

クラスにあるメンバ変数を更新したい

taro9292

総合スコア26

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/06/07 13:36

変数age (初期値10)を持つクラスInfoのインスタンスを作成し、
クラスが持つ関数Age7で7を足して返すプログラムなのですが、mainファイルでは更新されず、そのままになっています。
どんな動作になってしまっているのかわかりません。
環境はVisualStudio2019です。

//実行ファイル int main() { Info info; // age = 10 info.Age7(info.age); std::cout << info.age << "\n"; //17になるはずなのに10のまま
//Info.h #ifndef Info_HPP #define Info_HPP class Info { public: int age; public: int Age7(int age); public: Info() { age = 10; } }; #endif // Info_HPP
//Info.cpp #include "Info.h" #include <iostream> int Info::Age7(int age) { age += 7; return age; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

int Info::Age7(int age) {
age += 7;
return age;
}

これは仮引数ageを加算しています。

c++

1int Info::Age7(int age) { 2 this->age = age + 7; 3 return this->age; 4}

でしょうか

投稿2021/06/07 13:45

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taro9292

2021/06/09 01:54

ありがとうございます。値渡し・参照渡しについてまったく理解しておりませんでした。
guest

0

info.cppが誤っています
int Info::Age7(int age)としてしまうと、ローカル変数ageとクラス変数age2つが存在することになります。
また、以後このメソッド内部ではクラス変数ではなくローカル変数のageが更新されるので、クラス変数がインクリメントされません。

cpp

1int Info::Age7() { 2 age += 7; 3 return age; 4}

とすればよいです。
こうすると、ageはクラス変数が使われます。
要はクラス変数を使いたい場合は同一名の引数はメソッドに入れないほうがいいわけです。

投稿2021/06/07 13:43

fukatani

総合スコア626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

クラスが持つ関数Age7で7を足して返すプログラムなのですが

その通りに動いていますが、返した値を受け取っていません

引数のint age値渡しなので、age += 7;としても、呼んだ側のinfo.ageは書き換わりません。

投稿2021/06/07 13:44

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問