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

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

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

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

解決済

「代入の左オペランドとして左辺値が必要」というエラーを解決したい

c_beginner
c_beginner

総合スコア11

C++

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

3回答

0評価

0クリップ

294閲覧

投稿2022/04/29 06:41

編集2022/05/02 10:48

キーボードの入力より「野菜の名前」、「野菜の値段」「消費税込みの値段」を半角スペース区切りで表示するようなプログラムを作成したいと考えています。今のところ「野菜の名前」、「野菜の値段」を表示する処理は書けたのですが、「消費税込みの値段」を表示する処理が書けていません。

C++

#include <cmath> #include <iostream> #define number_of_vegetable 4 class Vegetable { private: std::string name; int price; public: void putname(std::string s) { name = s; } public: std::string getname() { return name; } public: void putprice(int n) { price = n; } public: int getprice() { return price; } public: void getpricewithtax(int m) { std::round(price*1.1) = m; } public: int getpricewithtax() { return std::round(price*1.1); } }; int main() { Vegetable item[number_of_vegetable]; for (int i = 0; i < number_of_vegetable; i++) { std::string s; int n; std::cin >> s; std::cin >> n; item[i].putname(s); item[i].putprice(n); } for (int i = 0; i < number_of_vegetable; i++) { std::cout << item[i].getname() << " "; std::cout << item[i].getprice() << " "; std::cout << item[i].getpricewithtax() << std::endl; } };

このようなコードを書いたところ、
std::round(price*1.1) = m;に対して

lvalue required as left operand of assignment(代入の左オペランドとして左辺値が必要)

というエラーが表示されました。
このエラーが表示されなくなるにはどうしたら良いでしょうか?
分かる方がいましたらご教授していただきたく存じます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

fana

2022/04/29 07:54 編集

> このエラーが表示されなくなるにはどうしたら良いでしょうか? どうすれば良いのか? と問うのであれば, std::round(price*1.1) = m; という問題の記述で「何をしたいのか?」っていう意図をまず説明すべきでは. すなわち, void getpricewithtax(int m) っていうメソッドってのはそもそも何をするものなの? っていう. 引数 m が何なのかもわからんし. (少なくともこのメソッドは提示された main 関数からは使われてない.そもそも要らない物なのであれば,このメソッドを削除すればそれで終了だと思うけど.)
c_beginner

2022/04/29 08:15

消費税を含めた値段を四捨五入して表示する処理を書きたいと考えています。 書き方がわからないためとりあえず public: void putprice(int n) { price = n; } public: int getprice() { return price; } を真似して書きました。
BeatStar

2022/04/29 12:08

とりあえず基礎からやった方がいいです。 今の質問では「空を飛ぼうと腕をパタパタと動かしてみましたがなぜか飛びません。鳥はこれで飛ぶのに」みたいな頓珍漢な質問です。 「人間は鳥と違って空は飛ばない」ことと「飛ぶには浮力と前進することが必要」といった基礎知識が必要です。 飛行機を作ったライト兄弟らのような人達はでたらめにやっているのではなく、既存の理論や関連知識から理論展開しています。 それを「基礎やるのだりー」とかでやらないのならどんな説明をしても無駄です。まずは基礎からやりましょう。 なにごとも基礎の積み重ねです。
BeatStar

2022/04/29 12:08

今回のは基礎ができていないことが原因です。
ikadzuchi

2022/04/29 14:00

「代入の左オペランドとして必要な左辺値」は誤訳しています。正しくは「代入の左オペランドとして左辺値が必要」です。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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