一个类调用另一个类的方法(解决了二个方法, 还有一个没知, 在家来接力呀)

kpman 2009-04-20 10:02:06
一个类调用另一个类的成员 的方法
1. 把一个类的对象传入,然后调用成员 (这个不知)
2. 在类中创建其他类的对象,调用成员
3. 成员是静态的,就直接调用

1.在类中创建其它类的对象。调用成员的方法(这个就象C中的一个涵数调用另一个数数的方法一样。最简单的就是这个)
class Time{ //定义时间类

private:

public:
int setime();
int getime( char *);
char xtrq[15]; //yyyymmddhhssmm
};


bool sample::RunApp(int argc,char *argv[])
{
Time ttime; //在类中定义另一个类的对象。
ttime.setime(); //调用另一个类的对象涵数。



2.静态涵数的方法

class CLevelLog
{
protected:
static int _fd;
static Short _level;
static ULong _space;
static String_var _name;
public:
~CLevelLog();
static int writeLog(Short level, char* fmt, ...); //这个涵数放在任何的*.C 中都能使用。 方便使用。
};

bool sample::RunApp(int argc,char *argv[])
{
CLevelLog::writeLog(1,"begin process read config"); //可以这样直调用。





3.把一个类的对象传入,然后调用成员 。。。。(这个高手们接力呀。。。。)
...全文
699 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
atm888334 2011-10-22
  • 打赏
  • 举报
回复
折腾了半天,这个问题还是没有能够完全弄明白。
firsthym 2009-04-20
  • 打赏
  • 举报
回复
补充一下,还有继承,不过注意私有继承和公有继承的应用区别:)
我只给个公有继承的列子。
#include<iostream>

class Base
{
public:
print()
{
std::cout<<"Base print()"<<std::endl;
}
};

class Derived:public Base
{

};

int main()
{
Derived d;
d.print();
return 0;
}
firsthym 2009-04-20
  • 打赏
  • 举报
回复
写的不错,你看改下不是更好?
[Quote=引用 5 楼 dizuo 的回复:]
C/C++ code#include <iostream>
using namespace std;

template<class T>
class Node
{
public:
void toDo()
{
cout << "This is a " << typeid(T).name() << " type node" << endl;
}
};

template<class DataType, class NodeType = Node<DataType> >//template<class DataType>
class List
{
NodeType head;//Node<DataType> head;
public:
typedef DataType Type;

void Print()
{
head.toDo();
}

[/Quote]
lpf000 2009-04-20
  • 打赏
  • 举报
回复
就是形参是 类类型对象,不管在类内部有个类对象,还是函数形参是类对象,通过形参引用其成员就可以啦
iambic 2009-04-20
  • 打赏
  • 举报
回复
这样写代码真累呀……
adventurelw 2009-04-20
  • 打赏
  • 举报
回复
如果是公有接口,那么只要有对象就可以
如果不是公有接口,就用友元。
xike2002 2009-04-20
  • 打赏
  • 举报
回复
可以这样来做:分别定义两个类以及类的成员函数,在第二个类中创建第一个类的一个对象,然后用该对象调用第一个类的成员函数。
xike2002 2009-04-20
  • 打赏
  • 举报
回复
可以这样来做:分别定义两个类以及类的成员函数,在第二个类中创建第一个类的一个对象,然后用该对象调用第一个类的成员函数。
ryfdizuo 2009-04-20
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template<class T>
class Node
{
public:
void toDo()
{
cout << "This is a " << typeid(T).name() << " type node" << endl;
}
};

template<class DataType, class NodeType = Node<DataType> >
class List
{
NodeType head;
public:
typedef DataType Type;

void Print()
{
head.toDo();
}
};

int main()
{
List<int> intList;
intList.Print();

List<float> floatList;
floatList.Print();

system("PAUSE");
return 0;
}
kpman 2009-04-20
  • 打赏
  • 举报
回复
把一个类作为模板参数~~ //能给出SAMPLE吗。
jssz103b 2009-04-20
  • 打赏
  • 举报
回复
上面的不能访问私有成员,可以通过友元方式处理
「已注销」 2009-04-20
  • 打赏
  • 举报
回复
把一个对象传入时传引用:
#include <iostream>

using namespace std;

class A
{
public:
void test()
{
cout << "void A::test()" << endl;
}
};

class B
{
public:
void f(A& a)
{
a.test();
}
};


int main()
{
A a;
B b;
b.f(a);
return 0;
}
机智的呆呆 2009-04-20
  • 打赏
  • 举报
回复
把一个类作为模板参数~~
kpman 2009-04-20
  • 打赏
  • 举报
回复
模块参数才深了。。暂时看不懂。。先放下。。其它的足够使用了。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧