【问题标题】:Declaring a vector of objects as a member of another class将对象向量声明为另一个类的成员
【发布时间】:2014-03-23 12:27:15
【问题描述】:

您好,我希望将对象向量声明为另一个类的成员,但我不太确定如何执行此操作。而且我是否在最后一个函数中正确填充了向量?

这是我要创建向量的类

class AggregatedQuoteType
{
    public:
        AggregatedQuoteType(double price, unsigned long volume);
        double get_price() const;
        unsigned long get_volume() const;
        unsigned long get_number_of_orders() const;
    private:
        double newPrice;
        unsigned long newVolume;
};

我希望向量成为这个类的成员

class OrderBook
{
    public:

        OrderBook ();

        void open (double tick_size, double tolerance, std::ostream &log);

        void close ();

        unsigned long submit_order (double price, unsigned long volume);

    private:

        PriceType order_tick_size;

        PriceType order_tolerance;


};

这是我目前的功能

unsigned long OrderBook::submit_order (double price, unsigned long volume)
{
    AggregatedQuoteType newQuote(price, volume);
    unsigned long number_of_orders = newQuote.get_number_of_orders();
    std::vector<AggregatedQuoteType> newMyOrder;

    if(price > 0 && volume > 0){
        for (unsigned int i = 0; i < number_of_orders; i++){
            newMyOrder.push_back(newQuote);
        }
    }

    return 0u;
}

任何帮助都会很有用。

【问题讨论】:

  • 就像其他会员一样。把它放在类定义std::vector&lt;AggregatedQuoteType&gt; vec;
  • submit_order 应该做什么?它当前将 newQuote 的 number_of_orders 个副本添加到向量中。这就是你想要的吗?

标签: c++ class vector


【解决方案1】:

如果不完全了解 submit_order() 的工作原理,我认为您需要这样的东西:

   class OrderBook
    {
        public:
            OrderBook ();
            void open (double tick_size, double tolerance, std::ostream &log);
            void close ();
            unsigned long submit_order (double price, unsigned long volume);   
        private:
            PriceType order_tick_size;
            PriceType order_tolerance;
            std::vector<AggregatedQuoteType> quotes_;  
    };


unsigned long OrderBook::submit_order (double price, unsigned long volume)
{
    AggregatedQuoteType newQuote(price, volume);
    unsigned long number_of_orders = newQuote.get_number_of_orders();

    if(price > 0 && volume > 0){
        for (unsigned int i = 0; i < number_of_orders; i++){
            quotes_.push_back(newQuote);
        }
    }
    return 0u;
}

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 2017-06-14
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多