面接でこんな質問を受けましたが、まだ解決方法がわかりません。
C++ コードがあるとします。
int main(int argc, char* argv[])
{
L<A>* pA = 0;
L<B>* pB = 0;
pA = pB;
}
これが実際にコンパイルされるようにするには、何を追加する必要がありますか?
L
つまり、 、A
およびB
クラスをどのように定義すればよいのでしょうか。プリプロセッサのディレクティブは使用しないでください。
私はそれを解決する方法しか考えていません:
template<class T> struct L {};
struct A {};
typedef A B;
または、前方宣言を使用するとさらに簡単になります。
struct A;
typedef A B;
template<class> struct L;
他のアイデアはありますか?