何时应该在类中的结构中定义成员,何时应该在嵌套类中定义成员?
例如:
class SkypeProtocol
{
public:
SkypeProtocol();
virtual ~SkypeProtocol(){}
private:
class SkypeProtocolDateTime
{
private:
UI32 uDate;
ERROR GetDateString(PUCHAR pcBuffer,PUI32 uBufLen);
};
};
或
class SkypeProtocol
{
private:
SkypeProtocol();
virtual ~SkypeProtocol(){}
typedef struct SkypeProtocolDateTime
{
private:
UI32 uDate;
ERROR GetDateString(PUCHAR pcBuffer,PUI32 uBufLen);
}SSKYPE_STRUCT;
};
答案 0 :(得分:6)
在C ++中,类和结构之间没有区别,除了成员的默认可见性(类为private,结构为public)。
如果您的对象仅用于存储(没有很多逻辑实现),那么通常的做法是将其创建为结构,并仅将类用于更复杂的对象。
BTW:在C ++中,您不需要使用 {
"status": "ok",
"count": 10,
"result": [
{
"id": "51",
"title": "a",
"price": null
},
{
"id": "82",
"title": "b",
"price": null
},
}
表示法,普通typedef struct {...} StructName;
就足够了。
答案 1 :(得分:1)
def dist(n1, n2):
x = n2[0]-n1[0]
y = n2[1]-n1[1]
return math.sqrt(x*x + y*y) # or math.hypot(x, y)
distances = {}
for node in G.nodes():
list_of_neigh = G.neighbors(node)
distances[node] = [dist(node, x) for x in list_of_neigh]
我不想暴露我的私人。
答案 2 :(得分:0)
嵌套类不是优选的,有时可能真的混淆。如果你真的想以这种方式使用,那就很好。
当你嵌套一个类时,你可能正在进入并以某种方式保密更多数据,但是oop类设计也建议拆分每个类,即使你想在其他类中使用它们。
私人记忆功能是一个可以解决您的问题的主题,所以阅读和挖掘;)
答案 3 :(得分:0)
通常的做法是将struct用于无行为或被动对象。它可能包含CONSTANTS但缺乏功能性。日期成员应该直接访问而不是使用getter和setter方法,因为它具有默认的公共可见性。实际上它是google c ++风格指南的一部分,也是处理用户定义类型的非常简洁的方法。