如何正确地做到这一点?在函数中声明静态对象

问题描述 投票:0回答:1

我的做法可行,但感觉编程糟糕得令人难以置信。

void draw_display() 
{
    static DISPLAY mydisplay = DISPLAY(parameters);
    mydisplay.set_orientation(0);

    do something with mydisplay... 
}

因此,draw_display 函数是由微控制器的中断调用的。 在我的理想世界中,我会在全局某处声明 mydisplay 对象,设置方向并仅在函数中使用全局对象。

执行此操作的正确 C++ 方法是什么?

这更像是一个“以正确的方式做事”并从中学习的问题。

c++ object global
1个回答
0
投票

确保 DISPLAY 类具有带有所需参数的正确构造函数。如有必要,您还应该确保它有析构函数。

在draw_display函数之外初始化mydisplay。这可确保您不会在每次调用该函数时都创建新的 DISPLAY 对象。您可以使用构造函数或初始化函数来初始设置对象。

class DISPLAY {
    public:
        DISPLAY(parameters) {
            // Constructor implementation with parameters
        }
    
        ~DISPLAY() {
            // Destructor implementation if necessary
        }
    
        void set_orientation(int orientation) {
            // Implementation of set_orientation
        }
    
        // Other member functions and data members
   };
    
    // Initialize mydisplay outside of draw_display
    static DISPLAY mydisplay(parameters);
    
    void draw_display() {
        mydisplay.set_orientation(0);
    
        // Do something with mydisplay...
    }
© www.soinside.com 2019 - 2024. All rights reserved.