c ++:没有重载函数的实例?

时间:2011-04-29 17:50:06

标签: c++ constructor overloading

// stock.h

#ifndef STOCK_H
#define STOCK_H

// declare Stock Class
class Stock
{
private:
    string StockExchange;
    string Symbol;
    string Company;
    double Price;
    int Shares;
public:
    Stock();
    Stock(string stockExchange, string symbol, string company, double price, int shares);
    void displayStockInfo();
    void setStockInfo(string stockExchange, string symbol, string company, double price, int shares);
    double getValue();
    bool operator < (Stock & aStock);
    bool Stock::operator > (Stock & aStock);
};

#endif

[破]

//main.cpp

#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>

#include "stock.h"

using std::string;
using std::endl;
using std::cout;
using std::setw;
using std::ifstream;


// *******************************
// Stock class

Stock::Stock() {
    StockExchange = "";
    Symbol = "";
    Company = "";
    Price = 0.0;
    Shares = 0;
}

Stock::Stock(string stockExchange, string symbol, string company, double price, int shares) {
    StockExchange = stockExchange;
    Symbol = symbol;
    Company = company;
    Price = price;
    Shares = shares;
}


// end Stock class
// *******************************

...

我的错误说的是“没有重载函数库存::库存(字符串stockExchange,字符串符号,字符串公司,双倍价格,int股票)的实例”。

我做错了什么?我在头文件中看到了它。

1 个答案:

答案 0 :(得分:2)

您在<string>头文件中未包含stock.h头文件,即使您在其中使用std::string也是如此。也许这会导致这个错误消息(如果是这种情况,那么我会说它真的是一个糟糕的消息)。

另一个问题是在Stock类定义中,你写了这个:

bool Stock::operator > (Stock & aStock);

这是错误的。从中删除Stock::,并按照以下方式删除:

bool operator > (const Stock & aStock);
               //^^^^ add this also (better)
在课堂外定义函数时需要

Stock::