不能在静态类中使用静态typedef指针。 C ++

时间:2017-04-21 21:04:14

标签: c++ embedded

我正在尝试在类中分配一个静态指针,以便我可以通过类函数访问它。

基本上,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的新手,但我知道你什么时候宣布你还要定义。但是,当我尝试定义时,它告诉我我有多个声明。

这里有什么解决方案?

0 个答案:

没有答案