C++ 在代码向量使用中找不到bug

C++ 在代码向量使用中找不到bug,c++,string,debugging,vector,C++,String,Debugging,Vector,我在这段代码中找不到bug 在函数“BinaryCode::decode(std::string)”中: 输出在上述站点中: #include <iostream> #include <stdio.h> #include <vector> #include <string> using namespace std; class BinaryCode{ public: BinaryCode(void); ~BinaryCode(void); st

我在这段代码中找不到bug

在函数“BinaryCode::decode(std::string)”中:

输出在上述站点中:

#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
类二进制代码{
公众:
二进制码(void);
~BinaryCode(void);
静态向量m_向量str;
矢量解码(字符串消息);
};
二进制代码::二进制代码(void){
}
BinaryCode::~BinaryCode(无效){
}
矢量二进制码::解码(字符串消息){
m_vecStr.clear();
char szNone[]={“NONE”};
向量推回(szNone);
m_vecStr.推回(消息);
返回m_向量;
}
int main(){
二进制代码bc;

//cout这不是一个bug,而是一个链接器错误,它告诉您链接器无法找到
m_vecStr
的定义

您需要定义一个静态变量,在代码中您刚刚声明了它,但忘记了定义它。
添加以下定义:

vector<string> BinaryCode::m_vecStr;
向量二进制码::m_vecStr;

仅在源文件中定义一次。

必须在类声明之外定义静态成员。请尝试在类声明之后添加此成员:

vector<string> BinaryCode::m_vecStr;
向量二进制码::m_vecStr;
如果要在不同的文件中声明类,请确保在实现文件(通常为
.cpp
)中定义静态成员,而不是在头文件(
.h
)中定义静态成员.

当我取消注释时//cout这是因为您试图打印整个
std::vector
。您应该打印它的每个元素。例如:
vector result=bc.decode(“12310122”);cout why vector&result=bc.decode(“dssdf”)我在没有“&”的情况下完成了它,它工作了,“&”它不工作了那里没有
&
。我还建议你在我取消注释时阅读a
vector<string> BinaryCode::m_vecStr;