我真的在這裏遇到了問題。 所以基本上我有一個Stock
類和BuyOrder
類。BuyOrder
類拿Stock
類作爲成員,所以它知道買哪個股票。股票創建時,它將採用公司名稱並以隨機價格進行初始化。然後我可以創建一個買入訂單,請參見bidPrice
,bidQuantity
,Stock
參數。我想創建一個BuyOrder
的數組來存儲訂單。然後每次用戶創建訂單時,都可以存儲訂單。類構造構造函數d必須顯式初始化引用成員
我的第一種方法是聲明BuyOrder buyList[100]
。這樣每次用戶創建訂單時,我都可以使用設置的功能來設置每個buyList[i]
,然後遞增i。但是,當我在main
中聲明BuyOrder buyList[100]
時。它說No matching constructor for initialization of 'BuyStock buyList[100]'
我回到BuyOrder.cpp
嘗試添加一個默認構造函數BuyOrder::BuyOrder(){}
然後它顯示錯誤:Constructor for 'BuyOder'must explicitly initialize the reference member 'buyStock'
。
我不知道如何從這裏開始。非常感謝。
以下是BuyOrder.cpp的一部分,因爲它太長,其餘部分只是函數定義。
BuyOrder::BuyOrder{double price, int quantity, Stock &s)
:buyPrice{price},
buyQuantity{quantity},
buyStock{s}{}
void BuyOrder::setBuyStock(Stock stock){
buyStock = stock;
}
void BuyOrder::setBuyOrderPrice(double price) {
buyPrice = price;
}
void BuyOrder::setBuyOrderQuantity(int quantity) {
buyQuantity = quantity;
下面是BuyOrder.h
#ifndef BUYORDER_H
#define BUYORDER_H
#include <ctime>
#include<iostream>
#include "Stock.h"
class BuyOrder {
friend void getCurrentTime();
public:
BuyOrder(double , int , Stock &);
void setBuyStock(Stock);
void setBuyOrderPrice(double price);
void setBuyOrderQuantity(int quantity);
double getBuyOrderPrice();
int getBuyOrderQuantity();
void placeBuyOrder();
void checkExcute();
void modifyBuyOrder();
void cancelBuyOrder();
double getHighestBidPrice();
int getHighestBidPriceQuantity();
double getLowestBidPrice();
int getLowestBidPriceQuantity();
private:
double buyPrice;
int buyQuantity;
bool excute = false;
Stock &buyStock;
time_t t;
};
#endif
這是Stock.h
#ifndef STOCK_H
#define STOCK_H
#include <vector>
#include <string>
using namespace std;
class Stock {
friend void getCurrentTime();
public:
Stock();
Stock(string nameOfCompany);
int getBidTerms();
int getAskTerms();
void printStockInfo();
void initialize();
void sortBid();
void sortAsk();
string nameOfCompany;
string currentTime;
vector<double> askPrice;
vector<int> askQuantity;
vector<double> bidPrice;
vector<int> bidQuantity;
int bidTerm;
int askTerm;
};
#endif
,這是Stock.cpp不含長函數定義
#include "Stock.h"
#include <iostream>
#include <vector>
#include <time.h>
#include <iomanip>
#include <ctime>
#include <random>
#pragma warning(disable : 4996)
using namespace std;
void getCurrentTime() {
time_t rawTime;
struct tm * timeinfo;
time(&rawTime);
timeinfo = localtime(&rawTime);
cout << asctime(timeinfo);
}
Stock::Stock(){}
Stock::Stock(string companyName) :nameOfCompany{ companyName } {
initialize();
sortBid();
sortAsk();
}
引用('T&'變量)和常量('const T'變量)必須由類的構造函數顯式初始化;如果這個類有一個默認的構造函數,那麼它必須初始化它們。 –