C++ 在代码向量使用中找不到bug
我在这段代码中找不到bug 在函数“BinaryCode::decode(std::string)”中: 输出在上述站点中: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
#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;