注册 登录
编程论坛 C++教室

我也来个问题?一天拉都没弄出来!!

wangandy 发布于 2004-08-17 22:39, 1211 次点击

关于局部类的一个问题

我认为程序没错但是怎么编译就编译不了??

郁闷!!!

#include<iostream.h> #include<string.h>

class StudentID { public: StudentID(int id=0) { value=id; cout<<"assigning srudent id"<<value<<endl; } ~StudentID() { cout<<"Destructing id"<<value<<endl; } protected: int value; }; class Student { public: Student(char* pName="noName",int ssID=0) { cout<<"Constructing student"<<pName<<endl; strncpy(name,pName,sizeof(name)); name[sizeof(name)-1]="\0"; StudentID id(ssID); } protected: char name[20]; StudentID id; }; void main() { Student s("Randy",9818); }

5 回复
#2
kai2004-08-18 04:41

#include <iostream> #include <cstring> #include <cstdlib> using namespace std;

class StudentID { public: StudentID(int id=0) { value=id; cout<<"assigning srudent id "<<value<<endl; } ~StudentID() { cout<<"Destructing id"<<value<<endl; } protected: int value; }; class Student { public: Student(char* pName="noName",int ssID=0) { cout<<"Constructing student"<<pName<<endl; strncpy(name,pName,sizeof(name));

// strcpy(&name[sizeof(name)-1], "\0"); // you can solve the problem with this solution name[sizeof(name)-1]='\0'; // or with this solution StudentID id(ssID); } protected: char name[20]; StudentID id; }; int main() { Student s("Randy",9818); system("pause"); return 0; }

#3
kuangjingbo2004-08-18 17:04

楼上说的对,我也编译过!

name[sizeof(name)-1]='\0'; 后就正确了!

从结果上看,局部的对象实验成功!

#4
金多虾2009-08-04 23:00
没点编程的风格啊!
看着头痛!
#5
罗罗小菜鸟2009-08-13 21:48
#include<iostream.h>
 #include<string.h>
 
class StudentID {  
public:  
    StudentID(int id=0) { value=id; cout<<"assigning srudent id"<<"   "<<value<<endl; }  
    ~StudentID() { cout<<"Destructing id"<<"   "<<value<<endl; }  
protected:  
    int value;  
};  
 
class Student {  
           public:  
               Student(char* pName="noName",int ssID=0)  
               {  
                   cout<<"Constructing student"<<"   "<<pName<<endl;
                   strncpy(name,pName,sizeof(name));  
                   name[sizeof(name)-1]='\0';  
                   StudentID id(ssID);
               }
           protected:  
               char name[20]; StudentID id;  
           };  
               
void main() { Student s("Randy",9818); }
 
Kai同学说得对,一个字符用的是单引号。
#6
哥特复兴2009-08-30 16:41
大家在写程序请写标准点,谢谢!!!
1