例如,在我的程序中我有2个类,并且我想从另一个类访问另一个类中的函数,有没有办法做到这一点?
class hello{
private:
public:
void function(){
// codes
}
}
class hi{
private:
public:
void function(){
// codes i want to access from class hello
}
}
答案 0 :(得分:2)
您需要使用hello
对象来调用hello::function()
类中的hi
,因为hello::function()
不是静态函数。例如:
class hi {
private:
hello mHello;
public:
void function(){
mHello.function();
}
};
答案 1 :(得分:1)
我将尝试澄清一些有关类和成员函数的作用。如果您使用hello
,foo
等完全抽象的名称,则可能很难将您的学习内容与任何实际内容联系起来。
类名通常是名词。例如class Dog { ... };
。因为它们代表对象的类型。
函数名称往往是动词。例如void Bark() { ... }
。因为函数做做事。
举个例子:
class Dog // define a "Dog" type of object
{
public:
void Bark() // give dogs the ability to bark.
{
std::cout << "Woof!" << std::endl;
}
};
您可能会以为您可以直接致电Bark()
,例如Dog::Bark();
。但这是荒谬的,因为“狗”不能吠叫。 *一个*狗吠。 Dog
只是对象的类型,不是对象本身。您必须实例化一个狗对象。像这样:
Dog fido;
fido.Bark();
答案 2 :(得分:0)
这取决于您如何处理此类。
如果需要静态方法,可以执行此操作。
#include <iostream>
class Hello
{
public:
static void hello()
{
printf("%s", "Hello\n");
}
};
class World
{
public:
void world()
{
Hello::hello();
printf("%s", "World\n");
}
};
int main()
{
auto w = World();
w.world();
}
否则,您可以这样做。
#include <iostream>
class Hello
{
public:
void hello()
{
printf("%s", "Hello\n");
}
};
class World
{
public:
void world()
{
auto h = Hello();
h.hello();
printf("%s", "World\n");
}
};
int main()
{
auto w = World();
w.world();
}