由於answer暗示,我知道允許在函數聲明中使用不完整的類型作爲返回值。所以我寫了下面的代碼:函數返回類型的前向聲明
Obj.h
class Obj {
int x;
};
f.h
class Obj;
Obj f();
f.cpp
#include "Obj.h"
Obj f() {
return Obj();
}
使用以下編譯命令
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
:的main.cpp
#include "f.h"
int main() {
f();
return 0;
};
編譯此代碼與以下編譯器
g++ *.cpp
提供了以下錯誤:
main.cpp: In function 'int main()':
main.cpp:4:7: error: invalid use of incomplete type 'class Obj'
f();
^
f.h:1:7: error: forward declaration of 'class Obj'
class Obj;
^
因此,編譯器不允許在函數聲明中使用不完整類型作爲返回值。什麼解釋?
您是否將f.cpp和main.cpp編譯在一起? – NathanOliver
@NathanOliver我編輯了編譯命令。是的,我將它們編譯在一起 –