这个报错是重定义
1、首先检查下是不是真的重定义了,检查下报错提示的函数,以及提示的路径位置
2、头文件被多次包含时,没有设置只包含一次
头文件用宏定义包含,注意宏定义别重复
#ifndef XXX_H
#define XXX_H
// 函数声明和定义
#endif
或者
#pragma once
3、我最近发现的,我本来是要包含 AAA.h 的,写成了 AAA.cpp,导致了上面的报错(我是从报错提示的函数对应的头文件 AAA ,进而发现了我写错的 #include)
4、还有一个可能跟编译方式有关系,函数声明定义要么都放到头文件里,要么就声明放 .h,定义放 .cpp,别混用
5、类的函数定义可以放在类里面,但是不能跟类同级
这种放在头文件是可以的
class ABC {
private:
int test_func(std::string FusionFeatureName) {
return 1;
};
};
下面这种放在头文件编译就会报错,如果有两个文件同时引用下面的头文件,就会编译报错说多重定义
class ABC {
private:
int test_func(std::string FusionFeatureName);
};
int ABC::test_func(std::string FusionFeatureName) {
return 1;
};
C++重定义报错原因及解决办法
1575

被折叠的 条评论
为什么被折叠?



