C++类程序运行异常:输入角色长度后程序直接终止的问题排查
问题分析与修复方案
嘿,我来帮你捋捋代码里的问题,这几个小细节导致了程序没按你预期运行:
1. 变量类型不匹配
你定义了int charNAME来存储角色名字,但名字是字符串类型,用int的话程序会把输入的内容当成整数处理,这肯定不对,应该改成string charNAME。
2. 多余的对象创建
你创建了char1 name和char1 length两个对象,但你的char1类本身就包含charName和charLength两个成员变量,完全可以用同一个对象来存储这两个属性,没必要分开创建。
3. 没调用打印方法
你写了printName()方法,但程序里从来没调用它!输入完数据后程序就直接执行到return 0结束了,自然看不到任何输出。
修正后的完整代码
#include <iostream> #include <string> // 注意:要使用string类型需要显式包含这个头文件哦 using namespace std; class char1 { public: string charName; float charLength; void printName() { cout << "char name is: " << charName << endl; // 加个空格和换行,输出更清晰 } // 额外加个打印完整信息的方法,方便查看所有输入内容 void printAllInfo() { cout << "char name is: " << charName << endl; cout << "char length is: " << charLength << endl; } }; int main() { string charNAME; // 改成string类型适配名字输入 float charLENGTH; cout << "write your char's name" << endl; cin >> charNAME; cout << "write your char's length" << endl; cin >> charLENGTH; char1 myCharacter; // 只需要一个对象就能存所有属性 myCharacter.charName = charNAME; myCharacter.charLength = charLENGTH; myCharacter.printName(); // 调用打印名字的方法 myCharacter.printAllInfo(); // 调用打印完整信息的方法 return 0; }
另外补充个小细节:原来的代码没包含<string>头文件,虽然部分编译器会通过iostream间接引入,但显式加上能保证代码在更多环境下正常运行。
内容的提问来源于stack exchange,提问作者Umut Kaya Bal
相关产品推荐
相关产品推荐

