我写了一个程序,要求一个学生的名字和他的分数。一切都能顺利编译,但执行后,程序仅询问名称,然后停止。
#include <iostream>
int main(){
class student{
public :
char *name;
int marks1; int marks2;
student(char* n, int n1, int n2){
name=n, marks1=n1, marks2=n2;
}
int calc_med(){return (marks1+marks2)/2;}
void display(){
std::cout<<name<<"\n The mediane is >> "<<calc_med()<<"\n";
}
};
char *name1;
std::cout<<"Enter the student's name > ";
std::cin>>name1;
int m1;
std::cout<<"Enter the first mark > ";
std::cin>>m1;
int m2;
std::cout<<"Enter the second mark > ";
std::cin>>m2;
student student1(name1,m1,m2);
student1.display();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您需要分配name
(或name1
可能分配)。
有很多方法可以做到这一点,但是最好的方法是a)使用一个std::string
:
std::string name;
Run Code Online (Sandbox Code Playgroud)
或b)将名称转换为数组:
char name[BUFFER_SIZE]; // BUFFER_SIZE is some constant
Run Code Online (Sandbox Code Playgroud)
注意:b)可能需要一些特殊的逻辑,以确保您不会BUFFER_SIZE
过时,但我将由您自己决定。