gpt4 book ai didi

c++ - fatal error LNK1120 : 1 unresolved externals in c++

转载 作者:行者123 更新时间:2023-11-28 00:58:49 25 4
gpt4 key购买 nike

我用c++写了一段代码:

#include<iostream>
#include<string>
#include<map>
#include<set>
#include<list>
#include<vector>
#include<fstream>

using namespace std;

#ifndef u32
typedef unsigned int u32;
#endif

vector<string> get_NodeProps(){
vector<string> NodeProps;
NodeProps.push_back("ObjType");
NodeProps.push_back("Nexus");
return NodeProps;
};
vector<string> NodeProps = get_NodeProps();

map<u32,string> create_OMSSObj_map(){
map<u32,string> OMSSObjTypeByID1;
OMSSObjTypeByID1.insert(pair<u32,string>(768,"storage"));
OMSSObjTypeByID1.insert(pair<u32,string>(769,"adapter"));
return OMSSObjTypeByID1;
};
map<u32,string> getOMSSObjTypeByID = create_OMSSObj_map();

template<typename TKey,typename TValue>
class Node{
map<TKey,TValue> objProperties;
public:
Node();
Node(const map<TKey,TValue>& m);
bool operator<(Node const& a2 ) const{
Node const& a1 = *this;
map<TKey,TValue>::iterator it1=a1.objProperties.begin();
map<TKey,TValue>::iterator it2=a2.objProperties.begin();
while(it1!=a1.objProperties.end() && it2!=a2.objProperties.end()){
if((*it1).second < (*it2).second)
return true;
else if((*it1).second > (*it2).second)
return false;
it1++;
it2++;
}
};
map<TKey,TValue> getObjProperties();
TValue getObjPropertyValue(TKey Key);
void setObjProperty(TKey key,TValue Value);/*Change Value of Key if Key is available, add new key-value pair otherwise*/
u32 removeProperty(TKey Key);
};

template<typename TKey,typename TValue>
Node<TKey,TValue>::Node(const map<TKey,TValue>& m){
objProperties = m;
};

template<typename TKey,typename TValue>
map<TKey,TValue> Node<TKey,TValue>::getObjProperties(){
return objProperties;
};
template<typename TKey,typename TValue>
TValue Node<TKey,TValue>::getObjPropertyValue(TKey Key){
/*if(objProperties.count(Key)>0)
return objProperties[Key];
else
return TValue();*/
return objProperties[Key];//This work same as above(if-else)?
};
template<typename TKey,typename TValue>
void Node<TKey,TValue>::setObjProperty(TKey Key,TValue Value){
if(!objProperties.insert(pair<TKey,TValue>(Key,Value)).second){//Key already exist: so change the Value of corresponding Key
objProperties[Key] = Value;
}
};
template<typename TKey,typename TValue>
u32 Node<TKey,TValue>::removeProperty(TKey Key){
return objProperties.erase(Key);//returns 1 if erased & 0 if Key not available
};

template<typename TKey,typename TValue>
class OMSSStorage{
set<Node<TKey,TValue>> StorageTree;
public:
u32 addNode(Node<TKey,TValue>);
u32 deleteNode(Node<TKey,TValue>);
u32 contains(Node<TKey,TValue>);
set<Node<TKey,TValue>> getStorageTree();
u32 size();
};
template<typename TKey,typename TValue>
u32 OMSSStorage<TKey,TValue>::addNode(Node<TKey,TValue> n){
return StorageTree.insert(n).second;
};
template<typename TKey,typename TValue>
u32 OMSSStorage<TKey,TValue>::deleteNode(Node<TKey,TValue> n){
return StorageTree.erase(n);
};
template<typename TKey,typename TValue>
u32 OMSSStorage<TKey,TValue>::contains(Node<TKey,TValue> n){
return(StorageTree.find(n) != StorageTree.end());
};
template<typename TKey,typename TValue>
set<Node<TKey,TValue>> OMSSStorage<TKey,TValue>::getStorageTree(){
return(StorageTree);
};
template<typename TKey,typename TValue>
u32 OMSSStorage<TKey,TValue>::size(){
return StorageTree.size();
};

template<typename TKey,typename TValue>
void addDCStorageObject(OMSSStorage<TKey,TValue>,string,int);
string getValueByName(string str,string name);

template<typename TKey,typename TValue>
void addDCStorageObject(OMSSStorage<TKey,TValue> tree,string StorObj,int propcount=2){
if((int)NodeProps.size() < propcount)
return;
Node<string,string> n;
for(int i=0; i<propcount ; i++){
n.setObjProperty(NodeProps[i],getValueByName(StorObj,NodeProps[i]));
}
return;
};

string getValueByName(string obj,string name){
int start,end;
string value,temp="<",temp1="</";
temp.append(name);
temp1.append(name);
start=(int)obj.find(temp);
end=(int)obj.find(temp1);
value=obj.substr(start,end-start);
value=value.substr(value.find(">")+1,end-start);
return value;
}

int main(){
OMSSStorage<string,string> StObj;
ifstream ifs("C:\\Users\\Public\\Documents\\share\\STORAGE.txt",ifstream::in);
string line;
string obj="";
int start=0,end=0;
while (ifs.good()){
getline(ifs,line);
if((line.find("<DCStorageObject>",0)) != string::npos && start==0){
obj.clear();
start=1;
end=0;
obj.append(line);
obj.append("\n");
}
else if((line.find("</DCStorageObject>",0)) != string::npos && end==0){
start=0;
end=1;
obj.append(line);
}
else{
obj.append(line);
obj.append("\n");
}
if(end==1){
addDCStorageObject(StObj,obj,2);
}
}
set<Node<string,string>> o = StObj.getStorageTree();
set<Node<string,string>>::iterator its=o.begin();
while(its!=o.end()){
cout<<"<StorageObj>:\n";
map<string,string> m=(*its).getObjProperties();
map<string,string>::iterator itm=m.begin();
while(itm!=m.end()){
cout<<(*itm).first<<" => "<<(*itm).second<<endl;
}
}
ifs.close();
cin.get();
return 0;
}

在编译时,这给出了链接错误。我已经尝试将类和各自的方法分离到不同的头文件中,但我仍然遇到同样的错误。错误日志作为图像文件附加 Linking Error

最佳答案

您只需要仔细阅读错误消息以找到缺失函数的名称(痛苦,但肯定有可能)。

在这种情况下,它表示没有 Node::Node(); 的定义——您声明了它,但从未定义过它。

编辑:我应该补充一点,我几乎没有回答这个问题——这是一个近乎完美的例子,需要将问题减少到最小 代码段来演示问题(在点,您可能不必再发帖,因为问题可能已经很明显了)。

关于c++ - fatal error LNK1120 : 1 unresolved externals in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com