не могу найти ошибку в использовании вектора кода - PullRequest
0 голосов
/ 19 января 2012

Я не могу найти ошибку в этом коде

В функции `BinaryCode :: decode (std :: string) ':

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;
}

Ответы [ 2 ]

1 голос
/ 19 января 2012

Вы должны определить статический член вне объявления класса.Попробуйте добавить это после объявления класса:

vector<string> BinaryCode::m_vecStr;

Если вы объявляете свой класс в отдельном файле, убедитесь, что вы определили статические члены в файле реализации (обычно .cpp), а не взаголовочный файл (.h).

1 голос
/ 19 января 2012

Это не ошибка, это ошибка компоновщика, которая говорит вам, что компоновщик не может найти определение для m_vecStr.

Вам нужно определить статическую переменную, в своем коде вы только что объявили ее, но забыли определить ее.
Добавить следующее определение:

vector<string> BinaryCode::m_vecStr;

только один раз в исходном файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...