ソースコード
c++
1 2#include <memory> 3 4class B; 5 6class A 7{ 8 int getHoge(B::Hoge hoge) 9 { 10 return hoge.huga; 11 } 12}; 13 14class B 15{ 16public: 17 struct Hoge 18 { 19 int huga; 20 }; 21 std::unique_ptr<A> a; 22}; 23 24int main() 25{ 26 B b; 27}
error
1test.cpp:8:20: error: 'B::Hoge' has not been declared 2 int getHoge(B::Hoge hoge) 3 ^~~~ 4test.cpp: In member function 'int A::getHoge(int)': 5test.cpp:10:21: error: request for member 'huga' in 'hoge', which is of non-class type 'int' 6 return hoge.huga;
質問内容
上のソースコードでのエラーはなぜ起こっていて、どうすれば解決するかを教えていただけると嬉しいです
追記1
c++
1int getHoge(B::Hoge hoge) 2 { 3 return hoge.huga; // hoge.hugaはclass B;しただけではわからない 4 }
というのは、このサイトを読んでわかりました。
ですが、関数の引数としてB::Hoge
を使う場合はどのようにすればよいか見当がつきません。
追記2
僕が作ろうとしているのは、Afile, Bfileがあり、以下のソースコードのように互いに依存しています。
c++
1// Afile.hpp 2 3#include "Bfile.hpp" 4 5class B; 6 7class A { 8 int getHoge(B::Hoge hoge); 9};
c++
1// Bfile.hpp 2 3#include <memory> 4#include "Afile.hpp" 5 6class A; 7 8class B { 9 struct Hoge { 10 int huga; 11 }; 12 std::unique_ptr<A> a; 13}; 14

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/10 04:18
2019/08/10 04:28 編集
2019/08/10 04:31
2019/08/10 04:40
2019/08/10 04:42
2019/08/10 04:46
2019/08/10 05:02
2019/08/10 05:08
2019/08/11 06:11