c++ - 将 "this"添加到 C++ 类实例化的 vector 中

标签 c++ class

我来自 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 的 vector 中。例如,这是我在 Python 中的做法:

RecordersList=[]
class Recorder:
    def __init__(self, ARecorder, BRecorder, CRecorder):
        self.ARecorder = ARecorder
        self.BRecorder = BRecorder
        self.CRecorder = CRecorder
        RecordersList.append(self)

我尝试了一个类似的 Action ,我把这条线放在那里: vector<Node> NodeList;在类声明之前(和 NodeList.push_back(this); 作为公共(public)函数),并在类声明之后尝试,但无论哪种方式,编译器在声明 vector 时都不知道 Node 类,反之亦然,Node 类是'知道 NodeList vector 。

有没有办法做到这一点?它将是附加到类型属于该类的现有 vector 的自引用类。

最佳答案

当然:在类中声明并定义一个静态成员,将this指针压入它:

class Foo; // forward declaration to make vector happy

class Foo {
    private:
        static std::vector<Foo *> store;
    public:
        Foo() { store.push_back(this); }
};

std::vector<Foo *> Foo::store;

关于c++ - 将 "this"添加到 C++ 类实例化的 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17708463/

相关文章:

c++ - 继承类之间的通信

c++ - 如何用按位运算实现位 vector ?

c++ - 链式相等运算符重载

Javascript类构造函数调用方法

java - 如何将项目从netbeans中的另一个类添加到列表框

java - java中的自引用类和类加载器

c++ - 使用顶点缓冲区用 OpenGL 显示规则网格的最快方法是什么?

c++:我自己的类的动态数组

c++ - 如何通过 g++ 链接 wsock32 库?

python - 在创建对象时返回对象以外的东西