类构造函数中的类型转换不正确
Improper typecasting in Class constructor
我刚接触C++,对类有问题。
我得到了这个原型
class MMA7455 : public Accel
{
public:
MMA7455(uint8_t);
uint8_t accel_get_data(acceleration_t*);
private:
uint8_t accel_data_ready(void);
};
我想创建一个实例
MMA7455 accel = MMA7455(0x21);
但是以下消息出现
In function `global constructors keyed to accel':
sensors.cpp:(.text+0x8): undefined reference to `MMA7455::MMA7455(unsigned char)'
为什么要查找"unsigned char"参数?即使我试图隐式转换常量的类型,也会收到相同的消息
MMA7455 accel = MMA7455((uint8_t)0x21);
您可能没有链接包含构造函数定义的.cpp文件。"uint8_t"是"unsigned char"的typedef。
您需要在程序中的某个位置定义MMA7455::MMA7455(uint8_t)
,即在原型中的定义之后添加一个{}
-主体(或者您可能忘记编译并链接包含MMA7455
定义的cpp文件。
它查找unsigned char
,因为uint8_t
恰好是系统上unsigned char
的typedef
。
uint8_t
是您平台上unsigned char
的typedef。该错误是链接器错误,因为您尚未为构造函数提供实现,并且与参数是否为unsigned char
无关。
相关文章:
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 不正确的操作数类型 MSVC
- 使用 AWS c++ 接口将文件上传到 s3 时内容类型标签不正确
- 从"wcslen"替换到"strnlen_s"时,用"const char*"进行类型转换是正确的方法吗?
- 为什么隐式类型转换在此代码中结果不正确
- pybind11:Python 到 C++ 数据类型转换不起作用
- 如果我除以 1,隐式类型转换不会发生
- 静态强制转换为不正确的类型
- 在C++中,将double转换为long的类型返回了不正确的值
- 在 C++ 中使用构造函数进行类型转换不起作用?
- 为什么这个函数重载与参数类型转换不明确
- C++中int到字符串的转换不正确
- 隐式类型转换不起作用
- 日语系统中的字符转换不正确
- 双到长转换不正确
- C/ c++类型转换不同于函数和表达式
- OPOS BSTR*转换不正确
- 类构造函数中的类型转换不正确
- 极坐标-笛卡尔坐标转换不正确.-0是什么意思