我正在编译这个头文件。我不明白为什么在void中它不会显示getfunctions的值。从下面的示例标题代码我正确地做到了。
#ifndef STOCK_MARKET_CLASS
#define STOCK_MARKET_CLASS
// system defined preprocessor statement for cin/cout operations
#include <iostream >
// programmer defined preprocessor statement for setreal operation
#include "textlib.h"
// programmer defined preprocessor statement for String
#include "tstring.h"
class StockMarket
{
private:
String symbol; // identifies the company
double startingPrice; // starting price of the stock
double closingPrice; // closing price of the stock
public:
// Constructor initializes the attributes that are the symbol, the starting price of the stock, and
// the closing price of the stock.
StockMarket(String sym, double sPrice, double cPrice);
// Takes the closing price of the stock and subtracts the starting price of the stock. Returns the
// amount of change in the price of the stock.
// You might not have any arguments.
double change(double sPrice, double cPrice);
// Returns the symbol.
// You might not have any arguments.
String getSymbol(String sym);
// Returns the starting price of the stock.
// You might not have any arguments.
double getStartingPrice(double sPrice);
// Returns the closing price of the stock.
// You might not have any arguments.
double getClosingPrice(double cPrice);
// Outputs the following information that is listed below.
// Stock Information for IBM: <=== where IBM is the symbol
// Starting Price $XXX.XX
// Closing Price $XXX.XX
// -------------
// Difference $XXX.XX
// You might not have any arguments.
void writeStockInfo();
};
//**********************************************************************
// StockMarket Class Implementation
//**********************************************************************
// Constructor is passed arguments sym, sPrice, and cPrice
// Implementation of the constructor
StockMarket::StockMarket(String sym, double sPrice, double cPrice)
{
symbol = sym;
startingPrice = sPrice;
closingPrice = cPrice;
}
// Function which takes the closing price of the stock and subtracts the starting price of the stock. Returns the
// amount of change in the price of the stock.
// Implementation of the function
// You might not have any arguments.
double StockMarket::change(double cPrice, double sPrice)
{
return double (cPrice) - double (sPrice);
}
// Function to return the symbol.
// Implementation of the function
// You might not have any arguments.
String StockMarket::getSymbol(String sym)
{
return sym;
}
// Function to return the starting price of the stock.
// Implementation of the function
// You might not have any arguments.
double StockMarket::getStartingPrice(double sPrice)
{
return sPrice;
}
// Function to return the closing price of the stock.
// Implementation of the function
// You might not have any arguments.
double StockMarket::getClosingPrice(double cPrice)
{
return cPrice;
}
// Function that outputs the following information that is listed below.
// Stock Information for IBM: <=== where IBM is the symbol
// Starting Price $XXX.XX
// Closing Price $XXX.XX
// -------------
// Difference $XXX.XX
// Implementation of the function
// You might not have any arguments.
void StockMarket::writeStockInfo()
{
cout << "Stock Information for"<< setw(4) << getSymbol() << ":" << endl;
}
#endif // STOCK_MARKET_CLASS
给我的例子
// return the player's batting average
double Baseball::getBatAvg ()
{
if (atbats == 0)
// average is 0.0 if player has no at bats
return 0.0;
else
// batting average is the number of hits
// divided by the number of at bats
return double(hits)/double(atbats);
}
// format and output batting statistics
void Baseball::writeBattingStats()
{
cout << "Player" << setw(3) << uniformNo
<< " At bats" << setw(4) << atbats
<< " Hits" << setw(4) << hits
<< " Average " << setreal(1,3) << getBatAvg()
<< endl;
}
这是我的cpp代码
#include "stdafx.h"
// system defined header file that declares the input/output operations (cin/cout)
#include <iostream>
using namespace std;
// system defined header file that declares parametric manipulators
#include <iomanip>
#include "Stock.h"
int main( )
{
StockMarket IBMStock("IBM", 150.00, 300.00);
IBMStock.writeStockInfo();
system("PAUSE");
return 0;
}
答案 0 :(得分:0)
get函数(如getSymbol)需要一个String类型的参数。
void StockMarket::writeStockInfo()
{
cout << "Stock Information for"<< setw(4) << getSymbol() << ":" << endl;
}
您正在调用没有提供参数的getSymbol()。 这就是IBMStock.writeStockInfo()没有显示任何结果的原因。
然而,这忽略了另一个问题。在你的get函数实现中,你只是返回你传入的参数......这没有多大意义。你应该做的是利用'this'指针。
String StockMarket::getSymbol()
{
return this->symbol;
}
我认为你所追求的是名为Symbol的成员变量字符串,它属于StockMarket对象。
另外,C ++方面的注意事项。最佳实践是分隔标头和实现文件。
修改强> 为了澄清,您也可以在不使用this指针的情况下访问成员变量
String StockMarket::getSymbol()
{
return symbol;
}