Bir de tasarım sorusu gelsin.
şimdi elimde konuları ortak olan bir kaç tane class var. Örneğin Graph ve Matrix olsun. bunları Math adlı bi componentta birleştirdim.
Graph.h
namespace Math
{
class Graph
{
// ...
};
}
Matrix.h
namespace Math
{
class Matrix
{
// ...
};
}
Math.h
#include "Matrix.h"
#include "Graph.h"
#include "Complex.h"
// ...
Sonra Math.h'ı eklediğimde tüm bu elemanları Math:: altında kullanıyorum.
Sorun şu: Aynı classları Math altında görmek istemediğim başka projeler var, örneğin diğerlerinden tamamen ayrı olarak sadece Matrix classını alıp projemde Space:: altında görmek istiyorum. Bunu sağlamak için dosyaları şöyle düzenliyorum:
Graph.h
class Graph
// ...
};
Matrix.h
class Matrix
{
// ...
};
Math.h
namespace Math
{
#include "Matrix.h"
#include "Graph.h"
#include "Complex.h"
// ...
}
Artık ister Math.h'ı ekleyip Math altında bi kaç classa sahip olucam, ister Matrix.h'ı direk ekleyip kullanıcam istersem de Space gibi başka bi component vasıtasıyla ulaşıcam (istediğim bu). Ama sorun şu ki eğer Matrix.h içinde başka namespaceler varsa (örneğin stl inclusiondan gelen std gibi) her şey karışıyor. Math::std:: gibi namespace'e sahip oluyorum ve stl headerları derlenmiyor.
Böyle bi sorunun çözümü varsa ne güzel ama bi türlü bulamadım. Sorunu çözecek alternatifler ya da class ve componentlar için daha iyi bi tasarım mevcutsa öğrenmekten memnun kalırım.