在模板函数中无效使用非静态数据成员错误

时间:2019-07-07 03:06:40

标签: c++

我在标头文件(代码已删除)中定义了以下模板函数:

class Payload
{
public:
    template<typename RetType> 
    RetType getPayloadValue(size_t startByte, size_t stopByte) const
    {
        RetType theResult;
        std::memcpy(&theResult,&mBuffer[startByte],stopByte-startByte);
        return theResult;
    }
private:
    uint8_t mBuffer[8];
};

在以下情况下发生错误:

getPayloadValue<CAN::DevType>(startByte, stopByte);    

一个编译器抱怨mBuffer:无效使用了非静态数据成员, 但是对于其他编译器来说很好。下面的代码直接来自编译器,当试图解析上面的代码时,编译器抱怨错误发生在这里:

template< class RetType> 
RetType TSCP::CANPayload::SBF_getPayloadValue_1< RetType> ::stub(::size_t StartByte, ::size_t stopByte)
{ 
    RetType theResult; 
    std::memset(&theResult, 0, sizeof(theResult)); 
    std::memcpy(&theResult, &(mBuffer[startByte]), stopByte - startByte); (
    return theResult; 
}

更详细的错误消息:

CANMsgRxAlloc_inst.cpp:34031:198: error: invalid use of non-static data member TSCP::CANPayload::mBuffer
CANMsgRxAlloc_inst.cpp:33059:52: note: declared here
     uint8_t mBuffer[8];
                                                    ^

0 个答案:

没有答案