我打算使用变量初始化或创建一个新对象。 错误说我声明冲突。
//instantiate new node object***********************
string peer = "peer";
string pNo = convertInt(addPeerNum); //convert peer number to string to concatenate 2 strings
string NewPeerObject = peer+pNo; << ERROR POINTS TO HERE
nodes NewPeerObject; << ERROR POINTS TO HERE
错误讯息:
冲突声明'节点NewPeerObject'&lt; - 最后一行错误 'NewPeerObject'的先前声明为'string NewPeerObject'&lt; - 2nd last line
我的主要观点是在添加更多对等体时创建一个新对象。 如果我添加1,它将创建一个新对象'peer1' 如果我添加2,它将是'peer2'等。
我正在阅读包含
的文件 addpeer 1
addpeer 100
addpeer 28
在我的程序中,它读取文件并将数字存储在名为“addPeerNum”的变量中 在我这样做的时候,它实际上有一个不同的字符串内容'NewPeerObject'。
所以在这个例子中,我实际上是在尝试创建3个新对象。
我有什么方法可以做到吗?
答案 0 :(得分:3)
你不能拥有两个同名的对象。它违反了 One definition Rule ,编译器自然会抱怨 请你自己帮个忙,改变其中任何一个的名字。
答案 1 :(得分:0)
我认为您正在寻找的是一种动态调整大小的对象数组。
您可以使用std::list
来实现这种行为。
std::list<PeerObject> list;
PeerObject peer(peer_string);
list.insert(peer);
如果您想将对等字符串用作键,请或std::map
std::map<std::string, PeerObject> peer_map;
PeerObject peer(peer_string);
peer_map.insert(peer_string, peer);
// .... add more
PeerObject& foundObj = peer_map[a_key];
foundObj.doSomething();
您也可以使用MACRO进行操作,但仅限于编译时,如果可能,您应该避免使用它们。