c ++ 11创建通过向量迭代的对象实例

时间:2015-12-13 11:33:10

标签: c++ c++11 vector

我有一个带有"注册"的矢量列表类。

的main.cpp

// main.cpp:
// from namespace::class3
bool successfulregistered = RegisterComponents(vector<CustomNamespace::class1,CustomNamespace::class2>);

class3.h

// in class3
    private:
        vector<CustomNamespace> Objectinstance;

    public:
        bool RegisterComponents(vector<CustomNamespace>& RegisterComponents);

class3.cpp

        // implementation
        bool class3::RegisterComponents(vector<CustomNamespace>& RegisterComponents)
        {
            for(int i = 0; i < RegisterComponents.end(); i++)
            {
                class3::Objectinstance->iterator(*RegisterComponents);
                // and then some checks
            }
        }

现在我想收集对类的访问并创建对象实例来调用方法:

void class3::startserver(void)
{
    for(auto i = Objectinstance.begin(); i != Objectinstance.end(); i++)
    {
        /*  How can I create the objects from the vector list with
                their classes and call the specific constructor? */

        /* i == CustomNamespace::class1 */


    }
}

class1.h

ConfigWatchdog(string &SetJSONFile, const char &cJSONRoot);

class2.h

ServerNetworking(unit& setIPAddress, ...);

1 个答案:

答案 0 :(得分:4)

尽管你的代码给了我一个WTF时刻,我想我可以提供帮助。循环中的i是一个迭代器:

for(auto i = Objectinstance.begin(); i != Objectinstance.end(); i++)

您可以通过解除引用i - *i来访问元素。您可以复制 - 构建另一个Namespace(将其设为大写Nnamespace是关键字,您不知道吗?):

Namespace obj1 = *i;

也许只是grab a book