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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

Q&A

解決済

2回答

6860閲覧

C++のgetter及びsetterを自動生成するソフトウェアはありますか?

KureteRubyLua

総合スコア206

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

0グッド

0クリップ

投稿2016/12/18 11:39

Visual Studioのプラグイン等、C++のgetter及びsetterを自動生成するソフトはありますでしょうか?

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

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

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

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

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

guest

回答2

0

参考までに、スニペットを作っています。
Easy way to generate Getters and Setters in Visual Studio

投稿2016/12/18 23:19

cateye

総合スコア6851

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

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

0

ベストアンサー

こんにちは。

無いと思いますよ。
といいますか、全てのprivateメンバをpublicにアクセスできるようにするってオブジェクト指向からかけ離れた発想です。全てのメンバをpublicにアクセスしたいのであれば、構造体にして全てのメンバをpublicに定義することをお勧めします。

投稿2016/12/18 14:25

Chironian

総合スコア23272

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

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

KureteRubyLua

2016/12/18 22:50

オブジェクト指向プログラミングでは、「メンバ変数は基本的にprivateかprotectedにしてgetter及びsetter(C#等最近の言語だとプロパティ)でアクセスするようにすべき」と聞くことが多いのですが、間違いなんでしょうか。
episteme

2016/12/18 23:01

「メンバ変数をpublicに晒すのは厳に慎むべし。  どうしてもその必要がある場合に限り、getter/setterを介してアクセスせよ。」 です。 自動生成したくなるくらいに晒したいメンバ変数が多くあること自体問題ではないかと。
Chironian

2016/12/19 02:16 編集

> と聞くことが多いのですが、間違いなんでしょうか。 間違いですよ。カプセル化のメリットを理解しないまま、形式だけ守ろうとするとそのようになります。そのような勘違いをしている人も一定数いるようですので、たまたま「外れ」な記述ばかりを見かけた、もしくは、そのように受け取ってしまったのどちらかと思います。 オブジェクト指向的なクラスは、ある程度まとまった機能を提供します。その機能を実現する際に用いる内部的な変数はprivateにして外部へ公開しません。内部変数を他の誰かに勝手に修正されると無茶苦茶痛いですから。 そして、private変数全てにgetter/setterを自動実装すると言うことは、全ての内部的な変数の修正を外部に許することになります。折角privateにして、外部からの修正を禁止したのに自由に触れるようにするって意味がないと思いませんか? 一部の内部的な変数については、ナマのまま外部に公開した方がよいケースもそこそこあります。 そのような変数は内部的な変数というよりは、そのクラスが管理すると「公言」している変数です。 そのような変数はpublicにすることも考えられますが、getter/setter経由しておいた方が良い場合が多く、それに対してgetter/setter経由しないことのメリット(無駄な関数を作らない)が小さいのです。 getter/setterの最も重要な効果は、その変数の型や名前を修正する必要に迫られた時、getter/setter関数を修正して外部から見える姿を同じに保てる場合があることです。外部からの姿が変化しなければ他のクラスを修正しなくて良いので随分助かります。 この効果は常に成立するわけではないですが、成立しなかったとしてもgetter/setterを経由するデメリットは無駄な関数がちょっと増えるだけなのでこのデメリットを受け入れた方が好ましい場合がほとんどなのです。
KureteRubyLua

2016/12/19 12:22

どうもありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問