抱歉,这是一个小问题。

我试图将已与一个库中的一个类放在一起的多图传递给该库中的另一个类,以进一步处理那里的数据。

该代码与其他人编写的GUI有关,此处的类与GUI中的两个不同工具有关。

非常粗略地讲我的代码,我在这里想要的是这样的

class A
{
private:
    std::multimap<int, double> mMap;
    int anInt;
    double aDouble;
    ***some more definitions***
public:
    void aFunction(***openscenegraph node, a string, and a parser function***)
    {
        ***a few definitions are declared and initialised here
        during calculations***
        ***some code calculating data stuff that
        passes bits of that data to mMap (including information
        initialised within the function)***
    }
}

class B
{
public:
    void bFunction(***openscenegraph node and some other data***)
    {
        ***I want to be able to access all the data in mMap here***
    }
}


有人能告诉我我该怎么做吗?

编辑:添加以澄清我的目标

        //Edit by Monkone
        //section below is akin to what I'm trying to do
        class B
        {
        private:
            std::multimap<int, double> mMapb;
        public:
            std::multimap<int,double> bFunction2(A::MultiMapDataType data)
            {
                return mMap;
            }
            void bFunctionOriginal()
            {
                ***I want to be able to access all the data in mMap here***
                ***i.e. mMapb.bFunction2(mMap);***
                ***do stuff with mMapb***
            }
        }



但是我什么也做不了

最佳答案

我将不需要在地图上工作,只需从地图上获取信息即可。


然后,您可以添加一个函数以返回对映射的const引用,并添加用于将const迭代器返回至A的函数:

class A {
public:
    typedef std::multimap<int, double> intdoublemap_t;
    typedef intdoublemap_t::const_iterator const_iterator;
    // typedef intdoublemap_t::iterator iterator;

private:
    intdoublemap_t mMap;

public:
    // direct access to the whole map
    const intdoublemap_t& getMap() const { return mMap; }

    // iterators
    const_iterator cbegin() const { return mMap.begin(); }
    const_iterator cend() const { return mMap.end(); }
    const_iterator begin() const { return cbegin(); }
    const_iterator end() const { return cend(); }

    /*
    iterator begin() { return mMap.begin(); }
    iterator end() { return mMap.end(); }
    */
};


现在,您可以从外部(从B)遍历地图:

void bFunction(const A& a) {
    for(A::const_iterator it = a.begin(); it!=a.end(); ++it) {
        std::cout << it->first << " " << it->second << "\n";
    }
}


或直接访问地图:

void bFunction(const A& a) {
    const A::intdoublemap_t& mref = a.getMap();
    //...
}

关于c++ - 将在一类中创建的多 map 数据传递给另一类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55452926/

10-11 16:28