staticを宣言すると・・・ – プログラミング – Home

staticを宣言すると・・・
 
通知
すべてクリア

[解決済] staticを宣言すると・・・


DA
 DA
(@DA)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

超初心者でVC++を始めたばかりなんですが
例えばクラス名がProductでstatic int stock;などと宣言すると
「外部シンボル "private: static int Product::Stock (?Stock@Product@@0HA) は
未解決です」
「外部参照 1 が未解決です」
という二つのエラーが出てしまうのですがどうすればいいのでしょうか。
こういう経験はありませんか?


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

こういうことですか?

class Product
{
public:
static int stock;
};

こういう場合は、これとは別に、

int Product::stock = 0;

などのように宣言せねばなりません。


返信引用
DA
 DA
(@DA)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

シャノンさんありがとうございます。
しかし以前のエラーは消えたのですが新たに
「'Stock' : 関数でない識別子が純粋関数であると指定されています。」
というエラーが出てしまいました。
宣言場所はstatic int stock;の後でいいですよね


返信引用
DA
 DA
(@DA)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

すいません 解決しました


返信引用
euro2004
 euro2004
(@euro2004)
ゲスト
結合: 22年前
投稿: 37
 

>宣言場所はstatic int stock;の後でいいですよね

ヘッダファイル内で宣言するとそのファイルをインクルードするたびに
定義されてしまいリンクエラーになると思います。
ので、hoge.hで
class hoge
{
static int a;
.
.

};

としてhoge.cppの先頭で
int hoge::a = 0;
としてやります。

#すでにそうしてたら無視してください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました