インナークラス

[戻る]
arashi 2011/01/12(水) 13:48:34
Win98SE VC++6.0

class Main
{
    class Inner
    {
        public:
            void Test( Main &main )
            {
                // アクセスエラー
                main.m_val = 2;
            }
    };

private:
    int m_val;
    
public:
    Main() : m_val( 0 ){}
};

色々なサイトを拝見しますと、インナークラスは外側のクラスの private に
アクセスできる見たいな内容が書かれているのですが、私の環境では、
" private メンバにアクセスできません。"のコンパイルエラーが出ます。

どうしてなのでしょうか。?
よろしくお願いします。

仲澤@失業者 2011/01/12(水) 16:13:27
VS2008では通っちゃいますねぇ(vv;)。
たぶん、コンパイラ(VC6)が古いせいぢゃないでしょうか。

arashi 2011/01/13(木) 08:12:38
[[解決]]
コンパイラが古いからコンパイルできないのは正直驚きました。
残念ですが、私の環境ではできないと諦めます。

どうも情報提供ありがとうございます。

PATIO 2011/01/13(木) 20:20:55
既に解決になっていますが。

多分、あちこちの掲示板で書かれているので検索すれば
引っかかりそうですが、
VC++6.0のコンパイラは実装が古いので最新のC++の規格書への準拠率は
当然低くなります。古いコンパイラを使う場合はこの部分を認識しておく
必要があります。
最新のC++の規格にできるだけ準拠しているコンパイラが使いたいのであれば、
開発環境も最新の物を使う必要があります。
少なくともVC++6.0は既にMicrosoftもサポートを止めてしまったくらい
古い環境です。特別な理由が無いのであれば、最新の環境を使った方が良いです。
特に勉強しようとしているのであれば、古いコンパイラはお勧めしません。
最近ではMicrosoftもExpress Editionと言う形で無料の開発環境を出しています。
C++のコンパイラとして使う分にはこれで十分だと思います。
もっともGUIのアプリを作ろうとするとMFCが使えないのでかなり不自由になりますが。
MFCを使ってGUIアプリを作りたいのであれば、有料の環境を購入するしか有りません。
その辺はMSDNのHPでも書かれていると思うので探して読んでみて下さい。

古いスレッドには追加発言できません。