我正在开发简单的模拟库并遇到问题,我有模拟Time变量,在任何情况下都不能由API用户(程序员)修改(只提供有关模拟时间的信息),但应该可以通过模拟库进行修改,所以它不能是恒定的.
这是我想出来的,但对我来说似乎有点棘手
double simTime; // Internal time, modified by library
const double& Time = simTime; // Time info provided for programmer in API
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
Geo*_*nov 10
而不是const double &你可以改变你的API来提供一个double getTime();返回值的函数simTime.
我觉得const double&-solution很简单,很优雅,我没有看到任何负面的副作用.
唯一的问题是你的库应该声明simTime为static匿名命名空间,或者在匿名命名空间中声明它不能从外部寻址.否则,任何extern double simTime其他翻译单元中的任何一个都将公开simTime.
所以写...
// library.cpp:
static double simTime;
const double &simTimePublic = simTime;
// library.h:
extern const double &simTimePublic;
// userCode.cpp:
#include "library.h"
...
double simTimeCopy = simTimePublic;
// simTimePublic = 1.0; // illegal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |