1

以下を実装したいと思います。

関数を定義します。そして、関数の後にN を書く()と、関数はN回呼び出されます。

例を挙げる:</p>

#include <iostream>
using namespace std;

typedef void* (*c)();
typedef c (*b)();
typedef b (*a)();

a aaa()
{
    cout<<"Google"<<endl;

    return (a)aaa;
}

int main()
{
    aaa()()()();
    system("pause");
}

出力は次のとおりです。

ここに画像の説明を入力

それを実装する他の方法はありますか?

4

2 に答える 2

6

ファンクタを使用するのは簡単です。

#include <iostream>

struct Function
{
   Function& operator()() {
      std::cout << "Google" << std::endl;
      return *this;
   }
};

int main()
{
   Function f;
   f()()()();
}
于 2012-09-02T08:52:56.897 に答える
1

あなたはファンクターに興味があるかもしれません:

#include <iostream>

class my_functor {
    public:
    //  if called without parameters
        my_functor& operator()(){
            std::cout << "print" << std::endl;
            return *this;
        }
    //  if called with int parameter
        my_functor& operator()(int number){
            std::cout << number << std::endl;
            return *this;
        }
};

int main(){
    my_functor functor;
    functor()(5)();
    return 0;
}

関数呼び出し演算子をオーバーロードすることで()、関数の動作をオブジェクトに追加できます。オーバーロードされた -operator に渡されるさまざまなパラメーターを定義することもでき()、それぞれの関数呼び出しが呼び出されます。前の関数呼び出しによって変更されたオブジェクト インスタンスで関数呼び出しを呼び出したい場合は、this-instance への参照を返すことを確認してください。

于 2012-09-02T08:53:48.440 に答える