我希望写一个C++类来封装一个C语言结构体。以下是一个简单的C语言结构体示例:
struct POINT {
long x;
long y;
}
我假设以下这个类,但我不确定它是否“高效”,也不确定它是否符合良好的C++风格。我不想使用不必要的变量或函数调用。如果您能改进我的代码,那将非常好:)
这个类的基本思路是它只是结构体的包装/处理程序。这就是为什么setStruct
和getStruct
可以直接修改私有数据并且它只是一个指针。其他成员总是被命名为set<Attribute>
和get<Attribute>
。
如果您使用setStruct
,唯一的缺点是结构体由于作用域而被删除,因此指针是“无效”的。
namespace wrapper {
class POINT {
::POINT * POINT_;
public:
POINT() {
POINT_ = new ::POINT;
}
~POINT() {
delete POINT_;
}
inline void setX( long x ) {
POINT_->x = x;
}
inline long getX() {
return POINT_->x;
}
inline void setY( long y ) {
POINT_->y = y;
}
inline long getY() {
return POINT_->y;
}
inline void setStruct(::POINT * __POINT) {
POINT_ = __POINT;
}
inline ::POINT * getStruct() {
return POINT_;
}
};
}
_POINT
是一个保留标识符。此外,在C++14之前,除非你是那1%真正需要使用它的特定场景,否则永远不要使用new
,除非在std::make_unique
中使用。 - chris