C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: vectorで構造体を使った場合のLNK2001の発生


(過去ログ 107 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■63960 / inTopicNo.1)  vectorで構造体を使った場合のLNK2001の発生
  
□投稿者/ OROCHI (5回)-(2012/10/31(Wed) 16:25:48)

分類:[C/C++] 

OS:XP
開発環境:VC++2008

こんにちは。
現在以下のようなプログラムを組んでいるのですが、最初に定義したvector構造体のリンクが取れずにLNK2001が出てしまいます

error LNK2001: 外部シンボル ""private: static class std::vector<struct _name2Value *,class std::allocator<struct _name2Value *> > name2::dirPath" (?dirPath@name2@@0V?$vector@PAU_name2Value@@V?$allocator@PAU_name2Value@@@std@@@std@@A)" は未解決です。	TestVector.obj	TestVector

このエラーについて心当たりがある方はいらっしゃいますでしょうか?

struct	_name2Value	
{
	wchar_t	*str;
	long	no;
	_name2Value(int size)
	{
		str = (wchar_t *)malloc(size);
		no = 0;
	}
	~_name2Value()	
	{	
		free(str);
	}
	// コピーコンストラクタ
	_name2Value(const _name2Value& re_n2v)
	{
		no = re_n2v.no;	// 値をコピー
		str = new wchar_t[1024];
		wcsncpy(str,re_n2v.str,1024);
	}
};
class	name2	
{
	static	std::vector<_name2Value*>	dirPath;
	static	std::vector<_name2Value*>	name2Value;
	public:
	name2()	
	{
		dirPath.clear();
		name2Value.clear();
	}
	~name2()	
	{
		if	(dirPath.size())	
		{
			for(size_t i = 0 ; i < dirPath.size() ; i++)	
			{
				delete dirPath[i];
			}
		}
		dirPath.clear();
		if	(name2Value.size())	
		{
			for(size_t i = 0 ; i < name2Value.size() ; i++)	
			{
				delete name2Value[i];
			}
		}
		name2Value.clear();
	}

	// 要素を追加
	static  void	dirPathAdd(_name2Value addvalue);
	static	void	name2ValueAdd(_name2Value addvalue);
};

// 要素を追加
void	name2::dirPathAdd(_name2Value addvalue)
{	
	dirPath.push_back(&addvalue);	
}

void	name2::name2ValueAdd(_name2Value addvalue)
{
	name2Value.push_back(&addvalue);	
}

引用返信 編集キー/
■63961 / inTopicNo.2)  Re[1]: vectorで構造体を使った場合のLNK2001の発生
□投稿者/ OROCHI (6回)-(2012/10/31(Wed) 16:41:27)
すみません解決しました

関数の直前で
std::vector<_name2Value*> name2::dirPath;
std::vector<_name2Value*> name2::name2Value;
といれて定義したら問題なく動きました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -