为ActiveMQ制作一个包装器类
Making a Wrapper class for ActiveMQ
我想为ActiveMQ制作一个包装器类,它将只有发送和获取函数。我想把它们包装在一个静态类中。用户可以使用这个客户端并向activemq实例发送和获取消息。
我希望这个过程是透明的。这个链接中有两个类
我唯一的障碍是,我需要在c++中这样做,不知道从哪里开始。我很久没有使用c++了,现在不知道如何创建这个包装器类。
我试着这样做:
// .h file
#include <stdlib.h>
#include <iostream>
using namespace std;
class ActiveMQWrapper
{
public:
static void send(std::string message);
static std::string get();
};
// .cpp file
#include<string>
#include<iostream>
#include "ActiveMQWrapper.h"
void ActiveMQWrapper::send(std::string message){
std::cout<<message;
}
std::string ActiveMQWrapper::get(){
return "test";
}
// test file
#include <string>
#include <iostream>
#include "ActiveMQWrapper.h"
int main() {
std::string foo ="test";
ActiveMQWrapper::send(foo);
std::cout<<ActiveMQWrapper::get();
return 1;
}
当我在。h文件中添加以下内容时,麻烦就大了。你认为我应该把这个隐含分离到一个工厂,初始化和实例,然后返回到上面的包装器吗?我如何处理所有的依赖关系?
private:
Connection* connection;
Session* session;
Destination* destination;
MessageProducer* producer;
int numMessages;
bool useTopic;
bool sessionTransacted;
std::string brokerURI;
和头文件,我得到几个消息作为错误,它抱怨路径。
我怎样才能得到这个正确的?我最终想要构建一个Factory,获取一个实例并向队列发送或获取消息。
是否有一个代码示例,我可以查看一下,使其正确?我只想使用这个生产者和消费者的功能。
编辑:我知道在c++中没有静态类这样的东西。这是我的推荐信。
首先,c++中没有所谓的"静态类"。所以第一个要求是毫无意义的废话。名称空间可能是您正在寻找的:您可以将set()
和get()
放在wrapper
名称空间中。
也就是说,你的"all hell breaks loose"问题可以通过放置& help;
#pragma once
放在头文件的顶部。
请注意,这只是您想要使用的所有编译器所支持的事实上的标准。毫无疑问,其他人会试图解释如何在标准语言中使用所谓的头守卫来完成同样更复杂和更容易出错的工作。试试吧。
另外,永远不要将using namespace std;
放在头文件的全局命名空间中。using namespace
只是拉入整个名称空间,甚至包括您不使用的部分。当人们#include
你的标题时,他们不会期望得到那么多的膨胀。
首先,让我们考虑static class
在支持它的语言中意味着什么。它说类没有面向对象的值,它存在只是为了组织。
因为c++不必把所有东西都硬塞进OO范式,所以它提供了适当的结构来表达这一点:名称空间。名称空间的行为就像其他语言中的静态类一样。它包含许多函数、变量甚至类。然后,我要做的是将 我对ActiveMQ一无所知,所以我恐怕不能在实现问题上提供帮助。 至于路径误差,如果没有实际看到,很难判断。我猜你的编译器选项设置不正确,或者,正如Alf p . Steinbach所建议的,你的头文件被包含了不止一次。get()
和send()
函数放在命名空间中。namespace activeMQWrapper
{
void send(std::string message)
{
// Put your code here.
}
std::string get()
{
// And here.
}
}
- 如何在c++17中制作一个模板包装器/装饰器
- 将 N-arg 函数包装到另一个函数中
- 包装一个对象并假装它是一个 int
- 如何包装一个函数以适应另一个函数的所需类型
- 包装器是从 strcat_s() 到 strcat() 吗?如果没有,是否可以创建一个?
- 如何将 c++ 类包装到 python 中,以便我可以使用 pybind11 访问其成员的公共方法(成员是一个对象指针)
- 用输出参数包装一个c++函数,以便在javascript/node中使用
- PYBIND11:如何将C 和Python代码包装到一个包装中
- c++11:如何编写一个包装函数来生成"std::function"对象
- OpenCv c++为基本的打印垫函数创建一个c包装器
- Objective-C - 为C++函数创建一个包装器文件
- 用我自己的例外编写一个包装器
- 围绕可以通过C链接器链接的C++库创建一个C包装器
- 如何在Cython中从另一个包装对象返回包装的c++对象
- 如何编写一个包装器,使其保持对输出的跟踪
- 为ActiveMQ制作一个包装器类
- 我如何在c#上为一个包装的c++方法写一个签名,该方法的参数中有一个指向函数的指针
- 为std算法函数创建一个包装器,用容器代替迭代器
- 我可以为任何c++向量做一个C包装器吗?
- 如何为delete编写一个C包装器,既快速又释放给定的任何类型,而不告诉它是什么类型