如何从类的实例中超载成员函数
How can I overload a member function from an instance of a class
我想在一个函数自动的函数的地方上一个类,以处理存储在此类实例中的信息。
但是,每个实例都有不同的值,并且可能是一种不同的方式。
因此,我需要一些与构造函数超载但在成员函数中的东西。每个实例都可以超载默认函数或将其保留到默认值以处理输入。
如何实现?
尝试在构造函数中调用功能喜欢:
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 */ );
相关文章:
- 如何在音频处理中使用超能力时间拉伸类
- 我的超类中的模板问题与结构定义
- 在具有 MPI 的超立方体中广播
- 在 c++ 中调用超构造函数之前做一些事情
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- C++为API中定义的结构创建超类
- 确保指向超类的指针指向c++中某个子类的对象
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- C++:从类型索引中获取超类类型索引
- C++11 中对超载'ref(Select::Expressions::Code&)'的调用模棱两可
- 如何将项目放入具有模板化超类类型的向量中
- QT 中的串行通信超时与 Arduino
- 是否有一种方法可以在超载运算符函数中接触默认运算符函数
- 如何将基类方法超载作为参数传递到C 中的模板类
- 班级(Arduino)中的超载方法
- 在C 中的超载运算符中使用局部变量
- 尝试在构造函数中超限时间
- 多态性(C )的派生类中的超载函数
- 更改所有子类中超类变量的值
- 如何在C++中超类某些数据结构