問題タブ [forward-declaration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 複数のソース ディレクトリでの前方宣言。テンプレートのインスタンス化
クラスの前方宣言を扱う素敵な本、参考資料を探しています。ソースが複数のディレクトリにある場合。dirA のクラス A は、dirB のクラス B で前方宣言されていますか? これはどのように行われますか?
また、テンプレートの問題、高度な使用法、インスタンス化の問題に関する資料はありますか?
ありがとう。
python - 前方宣言 - django に管理ページがありませんか?
これはおそらくデータベースの設計上の問題ですが、それ以上はわかりませんでした。他のいくつかのモデルの中で、私はこれらのモデルを持っています:
と
つまり、基本的に、バンドエンティティと多対多の関係を持つユーザーエンティティがあります。ねじれは、サイトでバンドを「作成」した特別なユーザーに、特別な編集機能を持たせたいということです。そこで先に進み、creator という ForeignKey を追加しました。Band がソース内の User の後に来たため、コードを実行できませんでした。だから私は前向きに宣言しclass Band(models.Model): pass
た。悲しいことに、これはあまり良い考えではないようです。現在、Band は django admin にインターフェース要素を表示しない唯一のモデルだからです (Bands モデルはそこにありますが、編集することはできません)。
私の質問は、これを適切に機能させるには、モデルにどのような変更を加える必要があるかということです。(もしあれば)
c++ - typedef されたクラスを前方宣言するにはどうすればよいですか?
当然のことながら、UNICODE が有効かどうかによって異なる実装を使用する文字列クラスがあります。
これはうまく機能しますが、現在、StringT typedef を前方宣言する必要があるという問題があります。これどうやってするの?
できないtypedef StringT;
ので、前方宣言が難しくなります。上記のコードをヘッダー ファイルの先頭に貼り付けなくても、この typedef された型の前方宣言を行うことは可能ですか?
c++ - C ++クラスの前方宣言の欠点は?
ソフトウェアでクラスの前方宣言を使用したいので、typedef
を使用して、クラスの完全宣言内で使用できます。
このようなSmth:
だから私の質問は:この方法に何か欠点はありますか?前方宣言に関するデストラクタの問題に関するいくつかの議論を思い出しますが、そこからすべてを引き出すことはできませんでした。
または、このようなものを実装する他のオプションはありますか?
ありがとう。
編集:私が言及していた議論を見つけました:ここに
c++ - 共分散を前方宣言する方法はありますか?
これらの抽象クラスがFoo
あり、Bar
:
ConcreteFoo
さらに、派生クラスとを持っていると仮定しConcreteBar
ます。foo()
とbar()
メソッドの戻り型を次のように共変的に改良したいと思います。
ConcreteBar
私たちの最愛のシングルパスコンパイラは、がから継承することを知らないため、これはコンパイルされません。Bar
したがって、これConcreteBar
は完全に合法的な共変リターン型です。プレーンフォワード宣言ConcreteBar
も、コンパイラに継承について何も通知しないため、機能しません。
これは私が一緒に暮らさなければならないC++の欠点ですか、それとも実際にこのジレンマを回避する方法がありますか?
c++ - 前方宣言とテンプレート関数エラー
現在、前方宣言とテンプレート関数にイライラする問題があります。私はグーグルでいくつかの変更を試みてきましたが、これまでのところ何も機能していません。以下はコードのスニペットです。
コードにも示されているエラーメッセージは次のとおりです。不完全なタイプ「struct TaskScheduler」の無効な使用</p>
このコードで何が間違っているのか、誰か教えてもらえますか? どんな助けでも大歓迎です..
c++-cli - C++/CLI でプロパティを前方宣言するにはどうすればよいですか?
プロパティを指定したい C++/CLI のクラスがあります。ヘッダー ファイルでプロパティを宣言し、そのプロパティを .cpp ファイルに実装したいと考えています。
ヘッダーは次のとおりです。
ヘッダー ファイルを宣言し、cpp に何も入れないと、次のエラーが発生します。
このことから、プロパティを次のように実装する必要があると結論付けました
ただし、このコードをコンパイルすると、大量のエラーが発生します。最初のエラー (その他は最初のエラーの結果です) は次のとおりです。
誰でもこの問題に光を当てることができますか?
c++ - Is there a shorter way to forward declare a class in a namespace?
I can forward declare a function in a namespace by doing this:
which is equivalent to:
To forward declare a class in a namespace:
Is there a shorter way to do this? I was thinking something along the lines of:
c++ - C++ クラスの依存関係
両方が互いに依存しているため、クラスでいくつかの問題が発生しています。一方を宣言しないと、もう一方を宣言することはできません。
ご覧のとおり、「ブロック」クラスは「ボード」とは何かを知る必要があり、その逆も同様です。前もって感謝します!
c++ - フォワード typedef 宣言、ビルド時間への影響、および命名規則
typedef アプローチがビルドに与える影響に興味があります。
次の例を考えてみてください。
上記のような状況になると、これにより typedef がヘッダー ファイルに書き込まれるため、ヘッダー ファイルに #include する必要があります。前方宣言がないためにビルド時間が長くなる可能性があることを懸念しています。
この投稿のコメントに基づく:
クラスを前方宣言し、参照またはポインターを typedef してから、.cpp ファイル内に #include することができます。これにより、ビルド時間が短縮されます。これについての私の結論は正しいですか?
もしそうなら、私は次のような typedef になるでしょう:
これは私には非常にきれいなコードのようには見えません。これを推奨する記事/投稿 (必ずしも SO ではない) を読んだことがあると思います。
これは受け入れられると思いますか?より良い代替案は?
更新:Michael Burr の回答を使用して、ポインターと参照のみのケースを解決できました。ただし、関数で sizeof() を取得しようとしたときに問題が発生しました。たとえば、クラスに次の関数があるとします。
あるいは、これは機能します。
Microsoft Visual C++ 6.0 を使用しています。これはコンパイラのバグですか、それとも一般的に標準に反していますか?
エラーのある例では、sizeof(SomeClass) は、Foo で作成される新しい typedef 型ではなく、typedef である元のクラスであることに注意してください。typedef で前方宣言を行うと、typedef であるクラスで何かを行う能力が制限されることに驚いています。
フォローアップ: XCode コンパイラを使用してテストしたところ、私の sizeof の質問は Visual C++ 6.0 コンパイラの問題であると思います。XCodeコンパイラはおそらく正しいと思いますが、現時点では他に試すことはありません. したがって、これは参考になりましたが、私の状況では最良の回答が機能しないため、個人的には現在のタスクで運が悪いです.