C++如何在一个类的成员函数中调用另一个类的成员函数?

C++如何在一个类的成员函数中调用另一个类的成员函数?,第1张

假设想在类A里调用类B的函数int f(x),两种办法: 1、class A::B 也就是说将B定义为A的父类, 这样就可以自然的在A里面用f(x)了 2、class A{ B B_ins; int g(x); } int g(x) { return B_insf(x) } 也就是说可以在A里面使用一个B的对象作为成员变量,这样就可以用他的函数了。

假设你想在类a里调用类b的函数int
f(x),两种办法:
1、class
a::b
也就是说将b定义为a的父类,
这样你就可以自然的在a里面用f(x)了
2、class
a
{
b
b_ins;
int
g(x);
}
int
g(x)
{
return
b_insf(x)
}
也就是说你可以在a里面使用一个b的对象作为成员变量,这样就可以用他的函数了

所以你的问题是什么?
类中函数调用只需 Class class = new Class(); 然后 classfunciton();就可以了
静态函数则是直接实用类名加函数名 Classfunction();

#include<iostream>
#include <string>
using namespace std;
class CD
{
public:
CD(string name, string songs1){
songer=name;
songs=songs1;
}
// 获得歌手的名称
string getSonger() {
return songer;
}
// 获得某首歌的歌名
string getSong(int index) {
return songs[index-1];
}
// 列出CD的内容、
void listSongs() {
cout<<"songer:"<<songer<<endl;
for(int i=0;i<6;i++)
cout<<"第"<<i+1<<"首歌: "<<songs[i]<<endl;
}
private:
string songer; // 歌手的名字。
string songs; // 每张专辑6首歌的名字。
};
class CDPlayer
{
public:
CDPlayer(){}
// 提供给用户一个按钮菜单
// 通过这个菜单,用户可以选择
// 1 插入CD // 2 播放CD // 3 d出CD // 0 关机
void showButtons() {
cout<<""<<endl;
cout<<" 1 播放CD "<<endl;
cout<<" 2 插入CD "<<endl;
cout<<" 3 d出CD "<<endl;
cout<<" 0 关机 "<<endl;
}
// 插入CD void insertCD(CD cd),形参是指向CD对象的指针
// 如果CDPlayer中已经有CD,提示先取出CD;
// 如果CDPlayer中没有CD,显示插入了哪位歌星的CD
void insertCD(CD cd){
if(cd==NULL){
cout<<" 插入了周杰伦的CD "<<endl;
cdIn=true;
}
else{
cout<<"已经有CD,请先取出"<<endl;
cdIn=false;
}
}
// d出CD CD ejectCD(),返回值是指向该CD对象的指针
// 如果CDPlayer中已经有CD,显示d出了哪位歌星的CD,返回该CD的指针;
// 如果CDPlayer中没有CD,提示CDPlayer中没有CD,返回NULL
CD ejectCD(){
if(cd!=NULL)
{
cout<<" d出了周杰伦的CD "<<endl;
return cd;
}
else
{
cout<<"已经没有CD"<<endl;
return NULL;
}
}
// 播放CD void Play()
// 如果CDPlayer中已经有CD,显示正在播放哪位歌星的CD,并打印CD中歌曲的清单;
// 如果CDPlayer中没有CD,显示CDPlayer中没有CD,
// 并提示用户插入CD
void play(CD cd) {
if(!cdIn)
cout<<" Please insert CD first "<<endl;
else{
cout<<" 正在播放周杰伦的CD "<<endl;
cd->listSongs(); // cdlistSongs();
}
}
private:
CD cd; // 插入CDPlayer中的CD,它是指向CD对象的指针。没有CD时为null
bool cdIn; // CDPlayer中是否已经插入CD
};
//主函数
void main()
{
int i;
string name;
string songs[6];
cout << "制造CD\n";
// 输入歌手名字
cout << " Songer's Name: ";
cin >> name; // 输入:周杰伦
// 输入该歌手的六首歌名(青花瓷、菊花台、三节棍等)
for (i = 0; i < 6; i++)
{
cout << " song" << (i+1) << "#: ";
cin >> songs[i];
}
// 制造CD
CD cd(name, songs);
// 显示CD的内容
cdlistSongs();
// 制造CDplayer
CDPlayer player;
// 生成播放机的按钮
playershowButtons();
// 播放
playerplay(&cd); // 打印:Please insert CD first
// 插入CD
playerinsertCD(&cd); // 打印:插入了周杰伦的CD
// 播放
playerplay(&cd); // 打印:正在播放周杰伦的CD
playerejectCD(); // 打印:d出了周杰伦的CD
// 另造一张CD,歌手和歌的录入省略。
CD cd2(name, songs);
playerinsertCD(&cd2);
playerplay(&cd);
}

首先这两个类不在同一个包
1 在usermn中导包
import mdmd5;
2在usermn中创建md5的对象
md5 XX = new md5();
接下来就可以用XXgetMD5ofStr(String inbuf);
调用到md5类里面的函数
多谢合作!!

public class class_1 { public final static String nema="杨国政"; } 在其他类中调用的方式是 public static void main(String[] args) { String name = class_1nema; }

如果想要在C++里调用成员函数(包括虚函数),需要提供一个简单的包装(wrapper)。例如:

// C++ code:
class C
{
      // 
      virtual double f(int);
};
 
extern "C" double call_C_f(C p, int i) // wrapper function
{
      return p->f(i);
}

然后,你就可以这样调用C::f():

double call_C_f(struct C p, int i);
void ccc(struct C p, int i)
{
      double d = call_C_f(p,i);
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13401181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存