c++调用外部类函数
c++ call outside class functions
是否有一种方法可以让内部类直接调用外部类函数?而不是检查布尔值是否为真。
:
内部类
class Inside {
public:
Inside()
{
}
~Inside()
{
}
Update()
{
if(buttonpress)
{
//call Outside::LoadGame();
}
}
}
课外
class Outside {
public:
Outside();
~Outside();
void LoadGame()
{
//Load Game
}
Inside* insideObject;
void Update()
{
insideObject->Update();
}
}
如果Inside::Update
函数没有对Outside
对象的引用,则不可能这样做。
最简单的解决方案是通过this
作为参数调用Update
:
class Inside
{
...
void Update(Outside* outside)
{
outside->LoadGame();
}
};
// ...
void Outside::Update()
{
inside->Update(this);
}
另一个解决方案是在Outside
类中创建inside
对象时将this
作为参数传递给构造函数。
然而,这两个类非常紧密地耦合在一起,这可能是糟糕设计的标志。在实现它之前,您应该问自己"我真的需要这种紧密耦合吗?"是否有其他方法可以通过更好的设计来解决这个问题?是什么是我想要解决的问题?"
如果你想访问一个静态方法:
文件Outside.h
class Outside {
public:
static void startGame();
}
文件Inside.h
#include "Outside.h"
class Inside {
public:
void update() { Outside::startGame(); }
}
相反,如果你想访问特定的实例,你有:
文件Outside.h
class Outside {
public:
void startGame();
}
file Inside.h v1
#include "Outside.h"
class Inside {
public:
void update() { o.startGame(); }
private:
Outside o;
}
file Inside.h v2
#include "Outside.h"
class Inside {
public:
void update(const Outside& o) { o.startGame(); }
}
您的具体情况:
class Inside {
public:
Inside() { }
~Inside(){ }
Update(Outside* o) {
if(buttonpress) {
o->LoadGame();
}
}
}
class Outside {
public:
Outside();
~Outside();
void LoadGame() { }
Inside* insideObject;
void Update() {
insideObject->Update(this);
}
}
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 启动类函数作为失去引用的线程
- C++调用使用重写函数的父类函数
- 将值传递到另一个类函数在打印时为零
- C++ 在外部使用嵌套结构实现类函数
- 在成员函数外部封闭类的定义中需要默认成员初始值设定项
- 如何生成类函数的外部线程
- C++:如何从外部调用父类函数
- 在类模板外部为指针定义函数
- 将外部函数作为参数传入的最佳安全方法是不使用boost的类函数
- 从类函数内部调用 DLL 的外部函数
- 如何在函数外部声明带有构造函数的类