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

时间:2017-09-22 06:18:42

标签: c++ polymorphism overloading

我想创建一个类,其中有一个自动调用的函数,用于处理存储在此类实例中的信息。

但是,每个实例都有不同的值,并且可能有不同的方式来处理该内容。

因此,我需要与构造函数重载相似但在成员函数中。每个实例都可以重载默认函数或将其保留为默认值来处理输入。

如何实现?

3 个答案:

答案 0 :(得分:0)

通过为变量行为use Cake\Utility\Inflector; // write this at the top class .. extends ... { /* other code */ public function <your-function> { $title = $this->request->data['title']; $slug = Inflector::slug($title); // Converting to slug } } 创建一个单独的类,可以导出与该函数相关的本地数据,并通过作为类来导出。

Callable

使用函数运算符class Callable { public: int m_Value; Callable(int value) : m_Value(value) { } void operator()( int val1, double val2 /* whatever makes sense */ ) { } }; ,我们创建了一种使Callable类型的变量看起来像函数的方法。

void operator()( ...... )

调用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可以通过修改myFunction的值来改变它调用的函数....

Variable

答案 1 :(得分:0)

尝试使用if else条件调用Constructor中的函数 像:

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

}

答案 2 :(得分:0)

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

adattamento: function(data) {
    var continua = true;
    var scorcfat = this.famiglia;
    var scorcroot = {};
    this.controlloprimi(scorcroot, scorcfat);
    this.root = scorcroot;
    console.log("hey!")
    console.log(this.root);
  },
  controlloprimi: function(scorcroot, scorcfat) {
    scorcroot.name = scorcfat.name;
    scorcroot.hidden = false;
    scorcroot.no_parent = true;

    if (scorcfat.father != null) {
      if (scorcfat.mother != null) {
        scorcroot.children = [{}, {}, {}];
        this.controlloprimi(scorcroot.children[1], scorcfat.father);
        scorcroot.children[2].name = "";
        scorcroot.children[2].hidden = true;
        scorcroot.children[2].no_parent = false;
        this.controlloprimi(scorcroot.children[3], scorcfat.mother)
      } else {
        scorcroot.children = [{}]
        this.controlloprimi(scorcroot.children[1], scorcfat.father);
      }
    }

    if (scorcfat.mother != null) {
      scorcroot.children = [{}, {}];
      this.controlloprimi(scorcroot.children[1], scorcfat.mother);
    }
  },

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