如何将c++可执行代码扩展到不同的代码层(例如产品代码、解决方案代码)
How to extend C++ executable to different layers of code (e.g. product code, solution code)?
我试图开发一个可执行文件,它在产品级别具有标准功能,在解决方案级别具有额外的自定义功能。
我在产品层面写了A类,在解决方案层面写了由A类衍生的B类。两个级别都有Init()函数,如果可执行文件是从解决方案级别构建的,我想调用类B的Init()函数。还要注意main函数位于产品层。
我的代码如下;
产品水平
产品级A.h
#include <iostream>
#define App A::GetInstance()
class A
{
public:
A(int priority = 1);
virtual ~A(){}
virtual void Init() { printf("Called Class A function n"); }
static A& GetInstance() { return *_instance;}
private:
static A* _instance;
static int _priority;
};
A.cpp在产品层面
#include "A.h"
A* A::_instance = new A();
int A::_priority = 0;
A::A(int priority)
{
if (priority > _priority)
{
_instance = this;
_priority = priority;
}
}
main.cpp在产品层面
#include "A.h"
int main(int argc, char** argv)
{
App.Init();
return 0;
}
解决方案水平
B.h在解决方案水平
#include "A.h"
class B : public A
{
public:
B(int priority = 2);
virtual ~B(){}
virtual void Init() { printf("Called Class B function n"); }
};
b.p p在解决方案级别
#include "B.h"
B* b = new B();
B::B(int priority):A(priority)
{
}
我的问题是?
- 而不是全局对象有一个更好的方法来做到这一点?
另外,如果我改变目标文件的制作顺序,那么使用相同的代码产生不同的输出?有办法克服这个吗?
a.) g++ -o test a. cpp B.cpp main.cpp
。/测试 -------> 输出——>调用类函数
b.) g++ -o test b. cpp A.cpp main.cpp
。/测试 -------> 输出——>被称为B类函数
我的实现是n个级别的理想方法吗?(例如,从其他解决方案构建的解决方案)
这一行需要修改成这样;
从A* A::_instance = new A();
A* A::_instance;
A* a = new A();
当你使用
给A::_instance分配新的实例时A* A::_instance = new A();
将覆盖B的构造函数赋值。因此,您可以通过删除对_instance的直接赋值来避免它。构造函数会这样做。
相关文章:
- 运行同一解决方案的另一个项目的项目
- 计算每个节点的树高,帮助我解释这个代码解决方案
- visual c++,如何获取解决方案目录中的代码
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 给定使用 Bitmask 的解决方案,我无法理解代码中标记的条件评估
- C++字符串代码点和代码单元的任何良好解决方案
- <thread> 在 C++/CLI 代码中包含的代码中使用。寻找更好的解决方案
- 对操作员限制的代码挑战的无效解决方案
- 为什么“从'x*'到'y'失去精度”是一个硬错误,什么是适合旧版代码的解决方案
- Xcode为c++中显式死代码提供了一个奇怪的解决方案
- OpenAL alGenBuffers 错误代码 40964 解决方案
- 代码强制 13C 解决方案
- 在我的解决方案中使用来自另一个项目的代码
- 请有人告诉我,而代码,当运行时,打印1而不是3.5作为解决方案
- 寻找一个代码解决方案来导入.mdb表到另一个.mdb表
- 如何将c++可执行代码扩展到不同的代码层(例如产品代码、解决方案代码)
- MS Blend 3&4可以打开包含混合代码的解决方案吗?
- 当将卡萨布兰卡代码集成到现有的c++解决方案中时,Memcpy异常
- 如何将c++11导入eclipse neon?我的代码给了我错误,我听说这就是解决方案