基于方法重载类

时间:2018-03-06 10:26:57

标签: c++ class overloading

我想用某种方法用不同的方法多次声明同一个类:

class A // Implementation 1
{
    void someMethod();
};

class A // Implementation 2
{
    void someMethod();
    void anotherMethod();
};

class A // Implementation 3
{
    void entirelyDifferentMethod();
};

基本概念是根据使用的方法选择合适的A类。主要用途是,我可以实现一个具有不同数据结构的类,这些数据结构依赖于实际调用的方法。

有没有办法在C ++中实现它,以便以下工作?

A class1;

class1.someMethod(); // class1 is using implementation 1 of class A

A class2;

class2.someMethod();
class2.anotherMethod(); // class2 is using implementation 2 of class A

A class3;

class3.entirelyDifferentMethod(); // class3 is using implementation 3 of class A

1 个答案:

答案 0 :(得分:0)

模板专业化可能有所帮助。我不确定你的目标是什么,但试试这个:

template<int N>
class A;

template<>
class A<1>
{
public:
     void f(){std::cout<<"A1 f()"<<std::endl;}
};

template<>
class A<2>
{
public:
     void f(){std::cout<<"A2 f()"<<std::endl;}
     void g(){std::cout<<"A2 g()"<<std::endl;}
};



int main()
{
     A<1> a;
     A<2> b;

     a.f();
     b.f();
     b.g();
}

输出结果为:

A1 f();
A2 f();
A2 g();

仅供参考:编译器无法从对象名称中推断出对象类型。

相关问题