問題タブ [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.

0 投票する
8 に答える
4565 参照

c++ - ライブラリクラスを前方宣言する価値はありますか?

チュートリアルを使用して、Qt の学習を始めたところです。私は現在、新しい LCDRange クラスを作成したチュートリアル 7 に取り組んでいます。LCDRange (.cpp ファイル) の実装は Qt QSlider クラスを使用するため、.cpp ファイルでは

ただし、ヘッダーには前方宣言があります。

Qtによると、

これはもう 1 つの古典的なトリックですが、あまり使用されていません。クラスのインターフェースに QSlider は必要ないため、実装のみで、ヘッダー ファイルでクラスの前方宣言を使用し、QSlider のヘッダー ファイルを .cpp ファイルに含めます。

コンパイラは通常、実際のソース コードではなく、ヘッダー ファイルの解析にほとんどの時間を費やすため、これにより大きなプロジェクトのコンパイルが大幅に高速化されます。このトリックだけで、多くの場合、コンパイルを 2 倍以上高速化できます。

これはやる価値がありますか?理にかなっているように思えますが、追跡する必要があるもう 1 つのことです。ヘッダー ファイルにすべてを含めるだけの方がはるかに簡単だと思います。

0 投票する
10 に答える
184973 参照

c++ - C++ での typedef の前方宣言

コンパイラで typedef の前方宣言が許可されないのはなぜですか?

不可能だと仮定すると、包含ツリーを小さく保つためのベスト プラクティスは何ですか?

0 投票する
2 に答える
7324 参照

c++ - C++ でクラスの public typedef を前方宣言する

前方宣言を使用し、#includes を実装ファイルに移動することで、一連のヘッダー ファイル「インクルード スパゲッティ」を簡素化しようとしています。ただし、次のシナリオに出くわします。

#include "Bar.h" を可能な限り削除したいと考えています。Bar.h の typedef が Bar クラスの外にリストされている状況も見られます。どちらの状況も同じ方法で対処できると思います。

何か案は?

0 投票する
6 に答える
5239 参照

c++ - クラスを実装せずに宣言することは可能ですか? (C++)

質問があいまいに見えることは知っていますが、他の言い方は思いつきませんでしたが、次のようなことは可能ですか:

?

0 投票する
6 に答える
365 参照

c++ - ヒープ上にオブジェクトを作成するために必要なオブジェクトのサイズはありますか?

コンパイラがC(クラス)オブジェクトのサイズを知る必要がある場合:たとえば、スタックにCを割り当てる場合、または別のタイプの直接保持メンバーとして

C ++コーディング標準から:101のルール、ガイドライン、およびベストプラクティス

これは、ヒープに割り当てられたオブジェクトの場合、サイズは必要ないということですか?

0 投票する
7 に答える
62296 参照

c++ - C++ でのネストされた型/クラスの前方宣言

私は最近、次のような状況に陥りました。

通常、クラス名を宣言できます。

ただし、ネストされた型を前方宣言することはできません。次の場合、コンパイル エラーが発生します。

何か案は?

0 投票する
1 に答える
2009 参照

.net - C ++ / CLIでデリゲートを前方宣言するにはどうすればよいですか?

どのように?

以下は機能しませんでした:

宣言には次のように機能します。

しかし、それを前方宣言として使用すると、