将范围从成员更改为全局功能
Changing scope from member to global function
我正在尝试将打印功能从成员更改为全局函数而不修改主函数。但是,我无法在不修改主函数的情况下进行编译。
class Student
{
char* name;
long ssn;
public:
Student (char*, long);
//void print();
char * getName ( );
long getSsn ( );
};
Student::Student(char* temp_name, long temp_ssn)
{
name = new char[strlen(temp_name) +1];
strcpy(name,temp_name);
ssn = temp_ssn;
}
char * Student::getName()
{
return name;
}
long Student::getSsn()
{
return ssn;
}
void print()
{
cout << "Name: " << getName() << endl;
cout << "SSN: " << getSsn() << endl;
}
int main ( )
{
Student S1("Mike", 222222222L);
S1.print();
return 0;
}
特别是我想知道是否有必要包括void print();在公共场合:学生班的部分?还是会成为成员函数?
实际上可以在不修改主函数的情况下执行此操作?
如何从全局函数访问类?我要疯了吗?谢谢大家。
这是使print
成为全局函数的方法。
class Student
{
char* name;
long ssn;
public:
Student (char*, long);
char * getName ( );
long getSsn ( );
};
Student::Student(char* temp_name, long temp_ssn)
{
name = new char[strlen(temp_name) +1];
strcpy(name,temp_name);
ssn = temp_ssn;
}
char * Student::getName()
{
return name;
}
long Student::getSsn()
{
return ssn;
}
void print(Student& s)
{
cout << "Name: " << s.getName() << endl;
cout << "SSN: " << s.getSsn() << endl;
}
int main ( )
{
Student S1("Mike", 222222222L);
print(S1);
return 0;
}
请注意,我已经在print
中添加了Student&
参数,它必须知道要打印哪个学生。在main
中,我已经更改了print
的方式,因此它具有Student
参数,而不是在Student
上调用方法。
我确定练习的重点是表明您可以使用全局功能或成员功能实现相同的效果。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 为什么在全局范围内使用"extern int a"似乎不行?
- 多态性和功能结合
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何创建一个空的全局类并在启动时实例化它
- 无全局变量或功能参数的递归调用
- 类和本地功能变量内的全局变量
- (C )创建可以从功能访问的动态全局数组/向量
- 是否有可能覆盖全局实现的功能
- 将范围从成员更改为全局功能
- 静态成员功能和全局功能之间有什么不同
- 全局功能定义
- 全局倾角定义的位置/如何存在哪些其他类似功能
- 将功能指针及其参数作为推力::元组传递给全局函数
- 传递给STD :: Sort时,全局功能比函数或lambda慢
- 具有全局功能的hpp / cpp拆分:.的多重定义.错误
- 如何使一个回调全局,所以我可以使用它的其他功能