-4

正如我本周学习的那样,通过在一个类上重载标准运算符,我们可以利用该类用户的直觉。通过重载一个运算符,我们实际上改变了编译器根据其参数使用运算符的方式。

这是我本周的项目:

使用 Visual Studio 创建一个 C++ 程序,您可以在其中设计一个“PhoneCall”类,该类包含一个电话号码,通话时长(以分钟为单位)以及每分钟的费率。重载类的提取和插入运算符。在这个程序中,重载 == 运算符来比较两个电话呼叫。如果两个电话都拨到同一个号码,则认为一个电话呼叫等于另一个电话呼叫。此外,创建一个 main() 函数,允许您将十个电话呼叫输入到一个数组中。如果已向某个号码发出 PhoneCall,则不允许对同一号码进行第二次 PhoneCall。将文件另存为 PhoneCall.cpp。

使用 Visual Studio 编译此应用程序并运行它以确保它没有错误。

以下是我到目前为止的代码:

#include <iostream> 
#include <string> 

using namespace std; 

class PhoneCall { 
private: 
    string phonenumber; 
    double perminuterate; 
    double calldurationminutes; 
public: 
    bool operator==( const PhoneCall &n ) const; 
    friend ostream & operator<<( ostream &f, const PhoneCall &n ); 
    friend istream & operator>>( istream &f, PhoneCall &n ); 
 }; 
 bool PhoneCall::operator==( const PhoneCall &n ) const { 
    return phonenumber == n.phonenumber; 
 }; 
 ostream & operator<<( ostream &f, const PhoneCall &n ) { 
    f << "Phone number: " << n.phonenumber << 
         ", Duration: " << n.calldurationminutes << 
         " minutes, Rate: " << n.perminuterate << endl; 
 return f; 
 } 
 istream & operator>>( istream &f, PhoneCall &n ) { 
 f >> n.phonenumber; 
 f >> n.calldurationminutes; 
 f >> n.perminuterate; 
 return f; 
 } 
 int main( ) { 
 PhoneCall a[10]; 
 cout << "Enter 10 phone numbers, duration in minutes, and the per-minute rates." << 
     endl << "Separate each with a space and then hit enter to complete it." << endl; 
 for ( int i= 0; i < 10; ) { 
     cin >> a[i]; 
     int j; 
     for ( j= 0; j < i; ++j ) 
         if ( a[i] == a[j] ) { 
             cout << "Duplicate number information ignored. Try again." << endl; 
             break; 
         } 
     if ( j == i ) ++i; 
 } 
 for ( int i= 0; i < 10; ++i ) 
     cout << a[i];

 system("pause");
 return 0; 
 } 
4

1 回答 1

2

你的程序中有很多很多语法错误。

在哪里inFile声明?

inFile = new StreamReader("name.txt", true);

你在这一行有一个大括号而不是一个括号:

inFile = new StreamReader{"name.txt");

您正在按位 OR-EQUALING 此行上的字符串值:

while ((inValue = inFile.ReadLine()) |= null)

你的意思是!=

于 2013-09-04T00:35:01.750 回答