src/template_match.cpp:101:1: warning: no return statement in function returning non-void [-Wreturn-type] }
时间: 2024-03-09 19:51:16 浏览: 245
这个警告提示表明,在一个非`void`函数中,存在没有返回值的情况。
在你的代码中,函数可能是这样的:
```c++
int foo()
{
if (condition) {
return 1;
}
// 没有返回值的情况
}
```
当`condition`为`false`时,函数没有返回值,这会导致编译器发出警告。
为了解决这个问题,你需要确保在所有可能的分支中都有返回值。例如:
```c++
int foo()
{
if (condition) {
return 1;
} else {
return 0;
}
}
```
在这个例子中,即使`condition`为`false`,函数也会返回一个值。这样就避免了编译器警告。
另外,如果你的函数确实没有返回值,应该将函数定义为`void`类型,例如:
```c++
void foo()
{
// ...
}
```
这样就不会出现这个警告了。
相关问题
correspondence_estimation_normal_shooting.h:184:41: error: return-statement with a value, in function returning 'void' [-fpermissive] getKSearch () const { return (k_); } ^ registration/CMakeFiles/pcl_registration.dir/build.make:103: recipe for target 'registration/CMakeFiles/pcl_registration.dir/src/correspondence_estimation_normal_shooting.cpp.o' failed
这错误是由于在返回类型为`void`的函数使用了带有返回值的`return`语导致的。在你提供的代码,`getKSearch()`函数的返回类型应该是`void`,但是你使用了`return (k_);`语句来返回一个值。这是不允许的。
要解决这个错误,你需要确认`getKSearch()`函数的返回类型是否正确,并根据需要修改函数的实现,确保不再使用带有返回值的`return`语句。如果`getKSearch()`函数确实需要返回一个值,那么你需要将返回类型修改为与返回值匹配的类型。
请注意,在你的下一个问题中,不要重复我之前说的话。
a.cpp:44:6: error: prototype for ‘bool ArrayList::findData(int, dataType)’ does not match any in class ‘ArrayList’ bool ArrayList::findData(int p,dataType d){ ^~~~~~~~~ a.cpp:15:8: error: candidates are: bool ArrayList::findData(int, dataType&) bool findData(int p, dataType& d); ^~~~~~~~ a.cpp:37:5: error: int ArrayList::findData(dataType) int ArrayList::findData(dataType d){ ^~~~~~~~~ a.cpp: In member function ‘bool ArrayList::insertData(int, dataType)’: a.cpp:58:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^
这个错误是因为类中函数的声明和定义不一致导致的。提示中说类中没有与函数声明匹配的函数定义,因此编译器无法将其链接在一起。
具体来说,你在类中声明了一个名为 `findData` 的函数,该函数有两个形参,一个是 `int` 类型,一个是 `dataType` 类型,返回值是 `bool` 类型。但是,在类外定义该函数时,你却将第二个形参改成了 `dataType&` 类型,导致与类中声明的函数不匹配。
同样的问题也出现在了另外两个函数 `findData` 和 `insertData` 中。在类中声明函数时,应该与类外定义的函数保持一致,包括参数类型、参数个数、返回值类型等。
因此,你需要修改类外定义的函数,使其与类中声明的函数保持一致。例如,在 `findData` 函数中,你可以将 `dataType&` 修改为 `dataType`,如下所示:
```cpp
// 类中声明的函数
bool findData(int p, dataType d);
int findData(dataType d);
// 类外定义的函数
bool ArrayList::findData(int p, dataType d) {
// ...
}
int ArrayList::findData(dataType d) {
// ...
}
```
修改完函数定义之后,再进行编译就应该可以解决这个错误了。同时,需要注意在 `insertData` 函数中添加返回值语句,否则编译器会给出警告。
阅读全文