从c++类中获取成员字符串
Getting Member String from Class C++
我有一个包含一些游戏关卡设置的类。
class Stage {
private:
int level;
int stars;
std::string imgName;
public:
int getLevel(){ return level; };
void setLevel(int n){ level = n; };
int getStars(){ return stars; };
void setStars(int n){ stars = n; };
std::string getImgName(){ return imgName; };
void setImgName(std::string name){ imgName = name; };
};
然后在我的程序中设置info.
Stage* stagesArr = new Stage[3];
stagesArr[0].setLevel(0);
stagesArr[0].setStars(1200);
stagesArr[0].setImgName("stage0.png");
如果我想要得到这个信息,那么字符串会给我一个奇数的输出。
CCLOG("Level: %i", stagesArr[0].getLevel());
CCLOG("Required stars: %i", stagesArr[0].getStars());
CCLOG("Image Name: %s", stagesArr[0].getImgName());
//Level:0
//Required stars: 1200
//Image Name: T%s //Or just random stuff.
我在这里错过了什么?
怀疑CCLOG()
使用与 <x>printf()
函数族相同的格式规则,您需要传递带有格式说明符%s
的const char*
。
你的getImgName()
返回一个std::string
值,但这与const char*
不直接兼容。
std::string::c_str()
函数:
CCLOG("Image Name: %s", stagesArr[0].getImgName().c_str());
还可以改进getter/setter函数,更清楚地指定const
适用性:
int getLevel() const { return level; }
// ^^^^^^
int getStars() const { return stars; }
// ^^^^^^
const std::string& getImgName() const { return imgName; }
// ^^^^^ // ^^^^^^
void setImgName(const std::string& name) { imgName = name; }
// ^^^^^
注意:
作为风格问题,您可以省略c++中getter/setter函数的get
/set
前缀,因为签名已经足够消歧了:
int Level() const { return level; }
void Level(int n){ level = n; }
int Stars() const { return stars; }
void Stars(int n){ stars = n; }
const std::string& ImgName() const { return imgName; }
void ImgName(const std::string& name){ imgName = name; }
我个人更喜欢的风格是使用小写字母,并使用_
后缀消除类成员变量的歧义:
class Stage {
private:
int level_;
int stars_;
std::string img_name_;
public:
int level() const { return level_; }
void level(int n) { level_ = n; }
int stars() const { return stars_; }
void stars(int n){ stars_ = n; }
const std::string& img_name() const { return img_name_; }
void img_name(const std::string& name) { img_name_ = name; };
};
相关文章:
- C++ 字符串类擦除成员函数的时空复杂性
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 使用 const char* 初始化 const ref 字符串成员时幕后会发生什么
- CPPCHECK C++成员函数上的格式字符串
- 无法使用 strcpy 将字符串复制到静态结构成员
- 反转没有循环的字符串,C++中只有 std::string 成员
- 如何删除作为C++联合的成员变量的字符串对象
- 有没有办法把字符串数组成员放在".structurevariable"前面?
- C++-将对象(如字符串)映射到表中成员函数的正确方法
- 将字符串推送到私有成员向量
- 有没有更快的方法从成员函数返回格式化字符串
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 分类一个向量,该向量由该类中的成员字符串保存对象
- 如何在C++中将本地字符串数组复制到私有成员字符串数组
- 如何实例化C++成员字符串引用
- 从c++类中获取成员字符串
- 如何将类成员字符串传递给其他类函数时解决"'std::length_error"?
- 将vector中结构体的成员字符串打印到cout流
- 如何返回类中私有成员字符串的值