相关疑难解决方法(0)

C++ Singleton设计模式

最近我碰到了C++的Singleton设计模式的实现/实现.看起来像这样(我从现实生活中采用了它):

// a lot of methods are omitted here
class Singleton
{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;
};
Run Code Online (Sandbox Code Playgroud)

从这个声明我可以推断出实例字段是在堆上启动的.这意味着存在内存分配.对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题.

我的主要问题是,如何以正确的方式实施它?

c++ singleton design-patterns

692
推荐指数
11
解决办法
65万
查看次数

当两个成员都在同一个类中时出现错误“非静态成员引用必须相对于特定对象”

我知道这个问题已经被问过很多次了,但我仍然被困住了。我以为我明白了这个错误的含义,但显然我没有明白。

所以,我得到的错误是

a nonstatic member reference must be relative to a specific object
Run Code Online (Sandbox Code Playgroud)

我的代码是:

class theTranslator {
public:
    ros::NodeHandle nh;

    ros::Publisher pub = nh.advertise<sensor_msgs::Image>("camera/depth/image_raw", 100);

    static void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg) {
        ROS_INFO( "I heard message" );
        pub.publish(recMmsg); //*** ERROR IS HERE ***
    }
};
Run Code Online (Sandbox Code Playgroud)

既然pub与 属于同一类getMessage(),那么它不应该起作用吗?如何使static成员函数使用同一类的变量成员?

PS这是在ROS(机器人操作系统)中完成的,但我相信这是一个C++错误(与ROS无关)。

c++ static class ros

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×2

class ×1

design-patterns ×1

ros ×1

singleton ×1

static ×1