2012-01-19 9 views
0

のバグを見つけることができません。は、私は `BinaryCode ::デコード(STD ::文字列)」関数では、このコード</p> <p>のバグを見つけることができないコードベクトルの使用

undefined reference to `BinaryCode::m_vecStr' 
undefined reference to `BinaryCode::m_vecStr' 
undefined reference to `BinaryCode::m_vecStr' 
undefined reference to `BinaryCode::m_vecStr' 
undefined reference to `BinaryCode::m_vecStr' 
more undefined references to `BinaryCode::m_vecStr' follow 

http://codepad.org/PtZkGx6W

出力は、上記のサイトにあります。

#include <iostream> 
#include <stdio.h> 
#include <vector> 
#include <string> 
using namespace std; 

class BinaryCode{ 
public: 
BinaryCode(void); 
~BinaryCode(void); 
static vector<string> m_vecStr; 

vector<string> decode(string message); 

}; 

BinaryCode::BinaryCode(void){ 
} 
BinaryCode::~BinaryCode(void){ 
} 

vector<string> BinaryCode::decode(string message){ 
m_vecStr.clear(); 
char szNone[]={"NONE"}; 
m_vecStr.push_back(szNone); 
m_vecStr.push_back(message); 
return m_vecStr; 
} 

int main(){ 
BinaryCode bc; 
    //cout<<bc.decode("12310122"); 
return 0; 
} 

答えて

1

静的メンバーをクラス宣言の外で定義する必要があります。クラス宣言の後にこれを追加してみてください:

vector<string> BinaryCode::m_vecStr; 

あなたは異なったファイルで、あなたのクラスを宣言している場合は、必ず.h(実装ファイル(一般.cpp)で、ないヘッダファイルに静的メンバを定義します)。

+0

なぜあなたは私がそれを見つけることができなかったのか分からない男に感謝します。私がコメントを外すとき –

+0

//cout<

+0

これは 'std :: vector '全体を印刷しようとしているからです。代わりに各要素を印刷する必要があります。例:ベクトル結果= bc.decode( "12310122"); cout << result [0] << endl'。 – jweyrich

1

それはそれは、リンカーはできませんがわかりますリンカエラーでバグではありませんm_vecStrの定義を検索してください。

宣言したばかりのコードで静的変数を定義する必要がありますが、定義するのは忘れてしまいました。ソースファイル内で一度だけ

vector<string> BinaryCode::m_vecStr; 


は、次の定義を追加します。

+0

私がコメントを外すとき//cout<

関連する問題

 関連する問題