c++ - C++知道是否调用了成员函数

标签 c++ struct

我怎么知道是否调用了方法,但是很早?
例如,我有一个Foo结构,它具有一些可配置的成员:

struct Foo {
  int a;
  int b;

  Foo& setA(int a) {
    this->a = a;
    return *this;
  }

  Foo& setB(int b) {
    this->b = b;
    return *this;
  }
};
现在,我有一个返回Foo的函数,如果没有对成员函数的进一步调用,则应立即使用它。
例如:
Foo getFoo() {
    static Foo foo;
    // <-- Here, I want to call some useFoo(foo) if no member functions are called
    return foo;
}

// This function is used like this:
getFoo().setA(3);
        ^-- here, we call setA so don't useFoo now

getFoo();
        ^-- but here, I want useFoo to be called automatically

最佳答案

您在问题中提出的建议实际上是不可能的。这会打破因果关系:如果在返回并可能使用它之前没有调用任何成员函数,则无法调用useFoo,因为返回后可以使用某些成员函数。
您可以做的是,如果未设置标志,则从useFoo的析构函数中调用Foo,然后在每个成员函数调用上设置该标志。但是,您需要注意如何处理副本/移动!

关于c++ - C++知道是否调用了成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63219069/

相关文章:

ios - 如何让我的形象隐藏在我的标签后面?

c - 在 C 中重新分配指向结构的指针数组

c - GCC `scanf` 段错误

c - 保证 ANSI C 结构大小

C++ boost : Split String

c++ - 使用内置的 C++ 排序函数对二维数组进行排序

c++ - 如何在 C++ 中创建指向(或引用)同一类的另一个成员函数的成员函数

c++ - 自定义 C++ 渲染系统中的性能比较。为不同的类调用渲染函数

c++ - C/C++ AQtime 分析器问题

class - Julia :无论是否面向对象编程