c++类成员动态添加
时间: 2024-01-29 12:10:00 浏览: 25
在C++中,类的成员是在编译时确定的,无法在运行时动态添加。但是,可以通过一些技巧来实现类似的效果。
一种常见的方法是使用指针和继承。可以定义一个基类,其中包含一个虚函数,然后派生出多个子类,每个子类实现不同的功能。在运行时,可以根据需要创建不同的子类对象,并通过基类指针来调用相应的函数。
另一种方法是使用函数指针。可以定义一个函数指针类型,然后在类中声明一个该类型的成员变量。在运行时,可以将不同的函数赋值给该成员变量,从而实现动态调用不同的函数。
以下是一个示例代码,演示了如何使用函数指针实现动态调用不同的成员函数:
```cpp
#include <iostream>
class MyClass {
public:
typedef void (MyClass::*FuncPtr)(); // 定义函数指针类型
void func1() {
std::cout << "This is func1" << std::endl;
}
void func2() {
std::cout << "This is func2" << std::endl;
}
void dynamicAdd(FuncPtr func) {
// 调用函数指针指向的成员函数
(this->*func)();
}
};
int main() {
MyClass obj;
MyClass::FuncPtr ptr;
ptr = &MyClass::func1;
obj.dynamicAdd(ptr); // 输出:This is func1
ptr = &MyClass::func2;
obj.dynamicAdd(ptr); // 输出:This is func2
return 0;
}
```