删除对特定类型的指针的依赖关系
Removing dependancy to a pointer of a specific type
我正在包装一个具有以下结构的C api:
typedef struct Value
{
union
{
int i;
const char* s;
bool b;
struct StructureMember_T* firstStructureMember
double d;
} value;
} Value_T;
我使用setter函数从C++设置此结构中的值。
class ValueSetter : public IValueSetter
{
public:
explicit ValueSetter(Value_T* value) : _value(value)
{
}
void operator()(int8_t v) const
{
_value->value.i = v;
}
...
void operator()(std::string& s) const
{
_value->value.s = s.c_str();
}
void operator()(Structure& s) const
{
_value->value.firstStructureMember = s.getFirstMember();
}
private:
Value_T* _value;
};
为了处理StructureMember_T*,我添加了以下我不满意的类。例如,它的接口依赖于来自 c API 的StructureMember_T。关于另一种方法的任何建议?稍后我将向结构类添加更多功能。
class Structure
{
public:
explicit Structure(Value_T* firstMember)
: _firstMember(firstMember)
{
}
StructureMember_T* getFirstMember()
{
return _firstMember;
}
void setFirstMember(StructureMember_T* firstMember)
{
_firstMember = firstMember;
}
private:
StructureMember_T* _firstMember;
};
鉴于您的目标,我认为在 C++ API 中使用二传手和获取器并没有问题。
如果你真的想隐藏它,我建议简单地让 Value 成为结构的朋友,并将 get/set 方法设置为私有。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 当依赖关系和依赖关系都是多态时,在哪个继承级别存储依赖关系指针?
- 指针和程序性能之间有什么关系吗?
- 如何解决指针数组中的数据依赖关系
- 指针 与局部变量的关系
- 回调和函数指针是什么关系
- 在特定情况下,指针删除和铸造之间的关系不清楚
- 使用关系运算符比较指针意味着什么
- 对齐方式与指针中尾随零的数量有何关系
- 如果存在任何循环关系,我应该假设弱指针使用吗?
- 为什么指针类型的内置关系运算符不生成C++的总顺序?
- 一旦使用,整个程序中的智能指针及其依赖关系
- 删除对特定类型的指针的依赖关系
- 智能指针的依赖关系注入是否违反单一责任原则
- 为什么有人告诉我数组是指针?C++中数组和指针之间的关系是什么
- C++引用和指针关系
- 在指向同一个类的两个不同指针之间建立对应关系
- 理解sizeof与指针的关系
- 双指针和二维数组之间的关系是什么?