私は Python のバックグラウンドを持っているので、これについてはご容赦ください。私が探しているものと同等のPythonを提供しますが。
ネットワーク ノードのリストを作成しているので、それらの MAC、IP アドレス、およびホスト名を格納するクラス「ノード」と、それらをきれいに出力する関数を作成したいと考えました。以下は私のコードです:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Node {
string MAC, IP, Hostname;
public:
void set_values(string M, string I, string H);
string list() {return "MAC: "+MAC+"\nIP: "+IP+"\nHostname: "+Hostname+"\n";}
};
void Node::set_values(string M, string I, string H) {
MAC = M;
IP = I;
Hostname = H;
}
int main(int argc, char* argv[])
{
Node firstnode;
firstnode.set_values("C0:FF:EE:C0:FF:EE","192.168.1.60","My-PC");
cout<<firstnode.list();
}
実行するとこれが出力されます:
MAC: C0:FF:EE:C0:FF:EE
IP: 192.168.1.60
Hostname: My-PC
私が望むのは、作成時にこれらのオブジェクトを NodeList というベクターに自動的に追加することです。たとえば、Pythonでそれを行った方法は次のとおりです。
RecordersList=[]
class Recorder:
def __init__(self, ARecorder, BRecorder, CRecorder):
self.ARecorder = ARecorder
self.BRecorder = BRecorder
self.CRecorder = CRecorder
RecordersList.append(self)
vector<Node> NodeList;
クラス宣言の前に(およびパブリック関数として)次の行を配置する同様の動きを試み
NodeList.push_back(this);
、クラス宣言の後に試みましたが、どちらの方法でも、ベクトルが宣言されているか、またはその逆で、Node クラスは NodeList ベクトルを認識していません。
これを行う方法はありますか?タイプがそのクラスの既存のベクトルに追加する自己参照クラスになります。