如何从类的实例中超载成员函数

How can I overload a member function from an instance of a class

本文关键字:中超 超载 成员 函数 实例      更新时间:2023-10-16

我想在一个函数自动的函数的地方上一个类,以处理存储在此类实例中的信息。

但是,每个实例都有不同的值,并且可能是一种不同的方式。

因此,我需要一些与构造函数超载但在成员函数中的东西。每个实例都可以超载默认函数或将其保留到默认值以处理输入。

如何实现?

尝试在构造函数中调用功能喜欢:

class abc{
 abc(){
         if username == "member 1"
             functioncall();
         else
             functioncall();
 }

}

据我所知,您需要一些虚拟构造仿真。有一种简单的C/C 方法。

    // Example program
#include <iostream>
#include <string>
struct A; 
typedef void (*cb)(A*);

struct A
{
    int m_a;
    static void foo(A* aref)
    {
       std::cout << "Print a: " <<  aref->m_a << "n";   
    }

    A(cb b=foo)
    {
        m_a = 100;
        b(this);
    }
};
int main()
{
    A a;
}

这不是很清楚,但仍然可以解决问题。

通过为变量行为创建一个单独的类Callable描述与该功能有关的本地数据,并且可以派生。

class Callable {
public:
    int m_Value;
    Callable(int value) : m_Value(value)
    {
    }
    void operator()( int val1, double val2 /* whatever makes sense */ ) {
    }
};

使用函数运算符void operator()( ...... ),我们创建了一种使类型可callable变量看起来像函数的方式。

class Variable {
public:
    Callable myFunction;
    Variable(const Callable & howToCall, /* some more stuff */) :
        myFunction(howToCall)
    { /* stuff */
    }
    void aFunction(int data, double value ) {
        myFunction( data,  value);
    }
};

调用aFunction时,myFunction的当前值被调用。

最后Variable可以通过修改my功能的值来更改其调用的功能..

 myFunction = Callable( /* new parameters */ );