答えて
これは 'C'言語の二日酔いです。あなたはその後、
struct Pt { int x; int y; };
は、この構造体の変数を宣言する必要がある場合はCで
は、あなたがのtypedefは、あなたが
typedef struct { int x; int y; } Pt;
C
でこれを避ける助け
struct Pt p;
を行う必要があります
今できること
C++ではC.で
、それはCで行うようにそれは、C++には表記の利点を提供していないあなたは
Pt p;
を行うことを許可され
class Pt { int x; int y; };
ので、これは必要ではなかったですOTOHでは、この構文は構築や破壊のメカニズムを提供しないため、制限が生じます。
つまり、コンストラクタまたはデストラクタで名前のtypedef名を使用することはできません。
typedef class { int x; int y; } Pt;
Ptというコンストラクタやデストラクタも使用できません。 本質的に、ほとんどの場合、C++でこれを行うべきではありません。
ありがとう!どのようなCのbeneficeについて? Steve Jessopによって記述されたもののみ? – octoback
あなたは確かに 'Pt'から継承することができます –
" Cハングオーバー "のために"継承のためのメカニズムを提供していません "と –
この回答は、単に{}
ではなく、クラス内に興味深いコンテンツがいくつかあると仮定しています。
C++では、(Cとの互換性のために)クラスと同じ名前の関数を持つことができますが、決して望むことはほとんどありません。
typedefと同じ名前の関数を持つことはできません。これにより、厳格な名前の選択から保護されます。ほとんど誰も気にしない、とあなたが気にするつもりだ場合でも、あなたはおそらくそれを記述します
class Name {};
typedef Name Name; // reserve the name
あなたが参照しているコードが実際に書かれたようであれば(私はあなたに従うことによってそれを見ることができませんあなたが空のクラスName
を呼び出すのはなぜですか?)しかし、上記の考慮のために修正されました。
- 1. Typedef C Struct:不完全なtypedefの無効な使用
- 2. オブジェクト内のtypedef列挙型を使用するクラス
- 3. C++ - テンプレートとtypedefベースのクラス階層
- 4. クラス内のtypedef
- 5. SWIGを使用してPythonでC++ typedefにアクセスする
- 6. gtk typedefの使用
- 7. Objective-CでC++クラスを使用する
- 8. ネストされたクラスのtypedef
- 9. C++:auto、またはtypedefを使用しますか?
- 10. フォワードは、C++でクラスのパブリックなtypedefを宣言します
- 11. テンプレートtypedef C++ 0x
- 12. C#typedefが
- 13. 派生クラスのtypedefのベースへの使用
- 14. const typedef; CとC++で
- 15. C++の厳密なtypedef用のイディオム
- 16. C++ BOOL(typedef int)vs bool(パフォーマンス用)
- 17. C++のtypedefとenums
- 18. C++ boost :: lexical_castでクラスを使用する
- 19. C++とtypedefを使って強く型付けする
- 20. bigintクラスC++を使用
- 21. 構造体の宣言にtypedefを使用する理由は?
- 22. typedefを使用してパラメータとして機能するポインタ
- 23. C#:オブジェクトで使用するクラス
- 24. C Typedef構造体/ユニオンオートキャスト
- 25. C#のエイリアスキーワード(typedefなど)?
- 26. C++のTypedef enum宣言
- 27. Swiftクラスを使用したObjective-Cクラスを使用したSwiftクラス
- 28. C/C++:typedefされた関数ポインタを使用して関数を宣言する*
- 29. C++ C++のヘッダファイルでのtypedefと型名
- 30. objective-cでのC++クラスの使用
C.の遺産は使用しないでください。 –
私は個人的にこの質問がdownvotesに値するとは思わない。私はそれを使用することに対してもアドバイスをしますが、公正な質問です。たぶん説明**なぜ**ここで良いでしょう。 –
@IvayloStrandjev - 同意した、私は同じことを書いていただけだった。それは本当に醜く不必要で、私はちょっと驚いています。これはIBMの文書で使われています。 –