[C++]名前空間内にある静的メンバ変数の宣言

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
悲しい

[C++]名前空間内にある静的メンバ変数の宣言

#1

投稿記事 by 悲しい » 8年前

以前に作成したclassを新たに,名前空間に入れるために以下のようなコードを実装しました.

<.hpp>
namespace hoge{
[tab=30]class huga;
};

class hoge::huga{
private:
[tab=30]static int piyo0;
~ 以下略 -
};

<.cpp>
int hoge::huga::piyo0 = 0;

- 以下略 -

以上

すると, 'int hoge::huga::piyo0' is private'とerrorが発生してしまいます.
名前空間を実装する前は,問題なく動作していたため,名前空間内の静的メンバ変数の宣言に問題があると考えているのですが,どのように実装すればよいのでしょうか.
ご教示お願いします.

かずま

Re: [C++]名前空間内にある静的メンバ変数の宣言

#2

投稿記事 by かずま » 8年前

huga.hpp

コード:

namespace hoge{
	class huga;
};

class hoge::huga{
private:
	static int piyo0;
};
huga.cpp

コード:

#include "huga.hpp"

int hoge::huga::piyo0 = 0;
この huga.cpp を g++ -c huga.cpp や cl -c huga.cpp でコンパイルしても
私のところでは、エラーが出ません。
g++ は cygwin の 5.4.0。cl は Visual Studio 2013 のものです。

エラーの出る環境は何ですか? エラーの出るソースや、エラー
メッセージを(ファイル名や行番号を省略しないで)提示してください。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: [C++]名前空間内にある静的メンバ変数の宣言

#3

投稿記事 by みけCAT » 8年前

悲しい さんが書きました:すると, 'int hoge::huga::piyo0' is private'とerrorが発生してしまいます.
思いっきりprivateって書いてあるからprivateになるのは当たり前だと思うのですが…
悲しい さんが書きました:名前空間を実装する前は,問題なく動作していた
そのコードは提示できないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: [C++]名前空間内にある静的メンバ変数の宣言

#4

投稿記事 by みけCAT » 8年前

問題なく動作していたコード、名前空間を導入したコードそれぞれについて、
最小限の・自己完結した・確認可能なサンプルコードを提示していただけるとありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る