我设计了一系列相关的类,并为了能够管理它们,使它们都从一个抽象类派生。
这些类都需要访问一系列共享资源,我发现自己在每个类中创建了一个指针向量,它们都是相同的(必须如此)。似乎在基类中制作一个静态成员会给所有派生类访问这个向量的权限,这意味着我只需要构建一次(构建后它不会改变,只是被查找)。
我的问题是如果这样做可以吗?如果可以,那么我该如何构建它,而不是从一个派生类中调用“填充向量”的方法?
我的想法是做一些像这样的事情
class Resource {};
enumR {RES0, RES1};
class AbstractClass
{
public:
virtual void OnInit() = 0;
void static fillVector(Resource* pResource, enumR Resourcename)
{lResource[Resourcename]=pResource;};
protected:
static vector<Resource*> lResource;
};
vector<Resource*> AbstractClass::lResource;
int main()
{
Resource res0, res1;
AbstractClass::fillVector(&res0, RES0);
AbstractClass::fillVector(&res1, RES1);
return 0;
};
那么当我实例化任何继承自AbstractClass的类的对象时,我将可以访问lResource向量,这正是我想要的。
这样做可行吗?很糟糕吗?还是可以的?