重载的组合对象实例和使用问题

时间:2017-07-23 15:26:37

标签: c++ constructor code-composer object-composition

我对使用重载构造函数的C ++组合感到有些困惑。我已阅读其他文章hereherehere,但仍然觉得我的问题与这些文章略有不同。第一个是最有帮助的,我实现了那里的建议,但有一些关于如何使用组合对象的问题。

以下是一些代码snippits:

// From temp.cpp
namespace tmp
{
    typedef struct
    {
        unsigned long adcmemory;
        uint32_t adcinputstuff;
    }adconf;
    class tempsensor
    {
    private:
        double temp;
        unsigned char memloc;
    public:
        tempsensor();
        tempsensor(adconf setup)
        {...}
// More stuff below
.
.
};

// From habs.hpp
#include <temp.cpp>

const tmp::adconf ex = {ADC_MEM0, ADC_INPUT_A22};
const tmp::adconf in = {ADC_MEM1, ADC_INPUT_A23};

class habs
{
public:
    tmp::tempsensor extemp(tmp::adconf ex), intemp(tmp::adconf ex);
// More stuff below
};

// In main.cpp
void tempThread(habs::habs &habs_obj)
{   /*
        This thread will update the internal and external temp sensor values
        while the mutex is not locked.  When the mutex is locked the thread
        will spin wait.
    */
    while(1)
    {
        while(!habs_obj.getMutex())
        {
            // This is what I expected to see but I get an error
            // #302 a pointer to a bound function may only be used to call 
            // the function habs_obj.extemp.setTemp();

            habs_obj.extemp.setTemp(); 
            habs_obj.extemp(ex).setTemp();
            habs_obj.intemp(in).setTemp();
        }
    }
}

所以我的目的是在habs类中有两个tempsensor类型的变量,并在实例化那些对象时使用temp类中的重载构造函数。然后,诸如main.cpp中的线程之类的线程将不断更新临时传感器,同时未锁定互斥锁。

我希望有人可以向我解释为什么我必须在这个问题上调用公共变量:habs_obj.intemp(in).setTemp();而不是:habs_obj.extemp.setTemp();

我也是这样做的吗?还有另外一种方法吗?我读到了关于复制构造函数的问题,我认为这不是我需要做的事情,但我也错了。

提前致谢!

0 个答案:

没有答案