【发布时间】:2011-11-06 08:27:29
【问题描述】:
在 C++ 中,将类的数据保留为私有成员总是更好。
如果一个类有一个向量作为成员,最好把它作为私有成员还是公共成员?
如果我有一个向量作为私有成员,我将无法轻松访问该向量的成员函数。所以我必须为每个需要访问向量方法的函数设计一个方法?
给出的例子:
class MyClass{
private:
std::vector<int> _myints;
public:
get_SizeMyints(){return _myints.size();}
add_IntToMyints(int x){_myints.push_back(x));
};
或者更好地保持向量公开并调用 MyClass._myints.push_back(x)?
----------编辑--------------
只是为了明确这个问题需要什么:
snake.h:
enum directions{UP, DOWN, RIGHT, LEFT, IN, OUT, FW, RW };
class Snake
{
private:
enum directions head_dir;
int cubes_taken;
float score;
struct_color snake_color;
V4 head_pos;
public:
std::vector<Polygon4> p_list; //the public vector which should be private...
Snake();
V4 get_head_pos();
Polygon4 create_cube(V4 point);
void initialize_snake();
void move(directions);
void set_head_dir(directions dir);
directions get_head_dir();
void sum_cubes_taken(int x);
int get_cube_taken();
void sum_score(float x);
float get_score();
void set_snake_color();
};
所以现在我知道如何更改代码了。
顺便说一句...一个问题,如果我需要像这样在其他类中复制向量:GlBox.p_list = Snake.p_list(如果是私有的,则有效)如果它们是私有的,那么什么是有效的方法?
运行 for 循环复制元素并将它们推回 GLBox.p_list 对我来说似乎有点低效(但可能只是一个印象):(
【问题讨论】:
-
MyClass的目的是什么? (即它将如何使用,它代表什么,它应该看起来像vector是否有意义等) -
应该是一条蛇,向量封装了构建蛇的立方体,所以它在运行时会改变长度..
-
感谢大家的有用回答!
标签: c++ class vector private public