[過去ログ] スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
47
(3): デフォルトの名無しさん [sage] 2015/12/08(火) 20:23:21.01 ID:BztczKM1(2/3) AAS
私が今書いているのが下のものです。
// A.h -----------------------------
#pragma once

#include "B.h"
class B;

class A {
int ia;
public:
void aFunc(B *b_ptr);
};

void A::aFunc(B *b_ptr) {
b_ptr->ib;
}
// -----------------------------------
// B.h -------------------------------
#pragma once

#include "A.h"
class A;

class B {
int ib;
public:
friend void A::aFunc(B *b_ptr);
};
// -------------------------------------
visual studio 2015で以下のエラーが出ています。
エラー C2248 'B::ib': private メンバー (クラス 'B' で宣言されている) にアクセスできません。 A.h 13行
エラー C2027 認識できない型 'A' が使われています。 B.h 9行
49
(1): デフォルトの名無しさん [sage] 2015/12/08(火) 22:29:07.89 ID:2NgjJ1M0(1) AAS
>>47
// A.h -----------------------------
#pragma once

class B;
class A {
int ia;
public:
void aFunc(B *b_ptr);
};
// -----------------------------------
// B.h -------------------------------
#pragma once

#include "A.h"

class B {
int ib;
public:
friend void A::aFunc(B *b_ptr);
};
// -------------------------------------
// A.cpp
#include B.h
void A::aFunc(B *b_ptr) {
b_ptr->ib;
}
50
(1): 47 [sage] 2015/12/08(火) 23:52:34.51 ID:BztczKM1(3/3) AAS
>>49
ありがとうございます。

B.hではAクラスのメンバ情報が必要なのでA.hをインクルードして、
A.hではBクラスがあることが確認さえできればよいのでBクラスを前方宣言すればよいということですね。

A.hに定義を描いたのはファイルが少ない方が問題が簡単になるかと思ったからですが、
B.hをインクルードする必要がでてくるので返ってめんどうなんですね。

重ねて質問させていただきたいのですがこれが循環参照というものですか?
またA.hに定義を書いた場合エラーを回避する書き方はあるのでしょうか?
53: 47 [sage] 2015/12/09(水) 01:14:48.16 ID:MWRH+1zr(1) AAS
言い方が良くなかったようですみません。
私自身はファイル数も面倒も気にせずオーソドックスなコードをかきたいとおもっています。
ただ問題を考える際まず簡単なものから理解して複雑にしていくのがいいと思っています。
なのでここには私が考える最もシンプルなコードを書きました。
しかしその結果、私が考えた単純化(ファイル数を減らす)が逆に問題を複雑にしてしまっていた。ということに気づきましたという意味の発言でした。

最後の質問は単純な好奇心です。私はそのコードをいじってどうにかコンパイル通そうとしていたので、正解があるなら一応聞いておきたいなと。実用性のないコードをかかせてしまっせすみません。

> 依存関係にあるクラスなら無理して分けないほうが良いのでは?
今はじめてオブジェクト志向を取り入れて簡単なゲームを作っているのですが、どのようにクラスを割り振るのかまとめるのかということで四苦八苦しています。
今は基本に忠実に1つのクラスに1つのソースとヘッダで書いていますが、少し慣れたらまとめてみようと思います。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.029s