首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为派生类传播好友

如何为派生类传播好友
EN

Stack Overflow用户
提问于 2012-12-17 22:46:08
回答 7查看 21.3K关注 0票数 29

我希望有一个类层次结构,并且只能在Factory中从它创建对象。

示例:

class Base
{
    protected:
        Base(){};
        virtual void Init(){};

    friend class Factory;
};

class SomeClass : public Base
{
    public://I want protected here! Now it's possible to call new SomeClass from anywhere!
        SomeClass(){};
        void Init(){};
};

class Factory
{
    public:
        template<class T>
        T* Get()
        {
            T* obj = new T();
            obj->Init();

            return obj;
        }
};

int main()
{
    Factory factory;
    SomeClass *obj = factory.Get<SomeClass>();
}

我的问题是,我希望只能从工厂创建对象,但我不想在从Base派生的每个类中声明friend class Factory

有没有办法在派生类中传播友情?有没有其他方法来实现这一行为?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13916321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档