C++ 类是否可以用作泛型命名空间(使用模板)?

C++ 类是否可以用作泛型命名空间(使用模板)?,c++,templates,namespaces,C++,Templates,Namespaces,我有一个名称空间,其中有几个函数用于已定义的类 class Object { struct SubObject{ //... }; //... }; namespace Process { Object::SubObject function1(Object& o){ //.. } void function2(Object& o){ //.. } }

我有一个名称空间,其中有几个函数用于已定义的类

class Object {
    struct SubObject{
        //...
    };
    //...
};


namespace Process
{
    Object::SubObject function1(Object& o){
        //..        
    }

    void function2(Object& o){
        //..
    }
}
现在,我必须用一个模板来概括这些函数,我注意到我不能在整个名称空间中使用一个模板。考虑到每次都必须为类的每个结构类型定义,我必须为每个函数创建一个相当乏味的模板,或者我想知道是否可以定义一个类而不是名称空间:

template<typename TObject>
class Process
{
    typedef typename TObject::SubObject TSubObject;

    TSubObject function1(TObject& o){
        //..        
    }

    void function2(TObject& o){
        //..
    }
}
但我的编译器要求我在TObject前面添加typename,我发现这解释了我的理解,因为编译器不知道SubObject是嵌套类型还是成员变量。但是typedef后面不是强制性地跟着一个类型,然后是一个别名吗? 我认为类成员、变量或函数不能类型化


提前感谢您的回答如果没有实例,就不能调用示例中的函数,那么,您需要使其成为静态函数。另一种选择是简单地在名称空间级别提供模板函数。@πάνταῥεῖ : 是的,但我必须为名称空间中的每个函数创建一个模板,并为每个函数中的每个嵌套类型创建一个typedef。我喜欢在Object中创建一打嵌套类型,我希望避免每次都执行typedef/typename。然后在模板类中对静态函数使用另一个选项。
typedef TObject::SubObject TSubObject;