
ヘッダーファイルにstruct XXXを定義して、
struct XXX{
int x;
int y;
}
生成時に、
struct XXX param = {0,0};
のような初期化を毎回行う必要がないようにしたいのですが、
構造体を利用している時点でそれは不可能でしょうか?
そこで、structをやめて、以下のようにclassにしてしまえば解決しそうですが、
class XXX{
public:
XXX():
x(0);
y(0);
{};
~XXX(){};
int x;
int y;
}
この解決方法について同じような経験あるかたいらっしゃいましたらコメントいただけませんか?
私的には少し大げさなような気がしています。
classにpublic変数を持たせるのも変な感じがしますし、そもそも構造体用のclassを作ることがあるのかなって疑問に思ってます。
お気づきかと思いますが経験が浅いので、この解決方法が常套手段なのかどうかが知りたいところです。
お詳しい方、つっこみでも良いのでお願いします。
No.4
- 回答日時:
>便利というのは?前々からexplicitの旨みを感じる機会がなかったのですが。
。。コンストラクタにデフォルト引数を与えておけば、XXX hoge; とするケースにも、
XXX fuge(1,1); とするケースにも対応できますね。
explicit 指定子は hoge = 5; のような int から XXX への暗黙的な変換を禁止することで、
コーディングミスを減らそうという意図ですね。
引き続きご回答ありがとうございます。
>explicit 指定子は hoge = 5; のような int から XXX への暗黙的な変換を禁止することで、
>コーディングミスを減らそうという意図ですね。
これは引数が1つの場合ではないでしょうか?
そもそも2つ以上のときにはコンパイラによっては暗黙的な変換ができてしまうのでしょうか?
No.2
- 回答日時:
こんにちは。
>>classにpublic変数を持たせるのも変な感じがしますし、そもそも構造体用のclassを作ることがあるのかなって疑問に思ってます。
STLのstd::pair<T1, T2>辺りが其の例かもしれません。
後コンストラクタですが、
XXX() : x(0), y(0){}
とするよりは、
explicit XXX(int __x = 0, int __y = 0) : x(__x), y(__y){}
とした方が、何かと便利です。
まぁ、見慣れるまでは違和感あるかもしれません。
explicitはコンストラクタの最適化を明示的にしないようにすることですね。
便利というのは?前々からexplicitの旨みを感じる機会がなかったのですが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
visualstudio C# テキストボッ...
-
DWORDの実際の型は何でしょうか
-
テンプレート関数でコンパイル...
-
C言語 宣言した変数になにも代...
-
分割コンパイル時に構造体....
-
【#define】 defineで定義した...
-
DDVによるメッセージの変更
-
C++/CLIでネイティブの構造体を...
-
スレッドのスケジューリングポ...
-
voidについて
-
C言語のコンパイルエラー
-
C で、a、b、c が16ビット符号...
-
警告 ”値が割り当てられていな...
-
構造体vectorの入れ子のfillの...
-
構造体を生成時にわざわざ初期...
-
プログラムを組んだのにエラー...
-
C言語の課題について
-
512Lや1024L等の「L」について
-
main.c:7:43: warning: implici...
-
LNK2019: 未解決の外部シンボル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
C++のfor文について
-
C++でboolにintの値を代入する...
-
2重定義って??
-
main.c:7:43: warning: implici...
-
typedef enumの使い方を教えて...
-
プログラムの中で別のmainを呼...
-
変数の型を定義しなかった場合...
-
関数の実体定義にヘッダファイ...
-
ハンドルされていない例外が発...
-
構造体の要素すべてに対する四...
-
C言語のコンパイルエラー
-
DLLでLIBファイルが作成されない
-
sshdログの意味
-
DLLのLPSTR 項目の戻り値の取得...
-
enumについて
-
VC6でlong longでエラー?
-
【#define】 defineで定義した...
おすすめ情報