c++ - 如何在 C++ 中限制对静态变量的访问?

标签 c++ static namespaces extern-c

我有一个名为“count”的 C 函数,如下所示:

void count(){ 
  static int c = 0;
  printf("Counter=%i", c);
  c++;
}

此外,我有一个 Cpp 对象 vector ,每个对象都调用“计数”函数。由于计数器变量是静态的,一个对象进行的调用也会增加所有其他对象的计数器值。我真正想要的是每个对象的专用计数器,因为“计数”函数是被测设备并且可能无法更改。我认为这应该可以使用 namespace ...有什么想法吗?


我最初的想法是使用命名空间...

namespace c1 {
#ifdef __cplusplus
  extern "C" {
#endif
    #include "count.h"
#ifdef __cplusplus
  }
#endif
}

namespace c2 {
#ifdef __cplusplus
  extern "C" {
#endif
    #include "count.h"
#ifdef __cplusplus
  }
#endif
}

然后像这样从 Cpp-Object 中调用 ...

if (objNr == 1) c1::count();
else if (objNr == 2) c2::count();
...

它对我不起作用。知道为什么吗?

最佳答案

提出的问题无法解决。如果该函数不可修改,则无法开始对单个实例进行计数。

关于c++ - 如何在 C++ 中限制对静态变量的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467560/

相关文章:

c++ - Qt - 简单循环的执行速度逐渐变慢

c++ - 提升共享指针自定义删除器示例

c++ - 如何将 Mat 复制到 ROI?

java - 从java中的另一个类访问静态变量

java - "static"模式不应该总是静态的吗?

javascript - react 反模式?

C++ 为什么这不会导致重新减速错误?

PHP 更改 SOAP 命名空间

c# - 如何将命名空间添加到 Visual Visual Studio 2010 中的默认 winforms 模板?

c# - 从非托管 C# DLL 返回列表/数组