我正在尝试在类中分配一个静态指针,以便我可以通过类函数访问它。
基本上,typeDef是在第三方头文件中定义的。
typedef struct
{
CAN_TypeDef *Instance; /*!< Register base address */
CAN_InitTypeDef Init; /*!< CAN required parameters */
CanTxMsgTypeDef* pTxMsg; /*!< Pointer to transmit structure */
CanRxMsgTypeDef* pRxMsg; /*!< Pointer to reception structure */
__IO HAL_CAN_StateTypeDef State; /*!< CAN communication state */
HAL_LockTypeDef Lock; /*!< CAN locking object */
__IO uint32_t ErrorCode; /*!< CAN Error code */
}CAN_HandleTypeDef;
这是我的Test类头文件“Test.hpp”
#pragma once
#include <stm32f4xx_hal.h>
class Test
{
public:
static CAN_HandleTypeDef* hcan1;
};
这是Test类代码“Test.cpp”
#include "Test.h"
void DoSomething()
{
HAL_CAN_Receive(Test::hcan1, CAN_FIFO0, 100);
}
这是我尝试为其赋值
的主要功能int main(void)
{
CAN_HandleTypeDef hcan1;
<-- Code is here that uses and populates hcan1 -->
// Initialize libraries
Test::hcan1 = &hcan1;
}
当我尝试编译时,我得到“错误:对`test :: hcan1'的未定义引用”
我是cpp的新手,但我知道你什么时候宣布你还要定义。但是,当我尝试定义时,它告诉我我有多个声明。
这里有什么解决方案?