命名空间定义和异常

问题描述:

我有,据我可以告诉我所做的一切都是正确命名空间定义和异常

下面是我的代码,并建立输出定义一个命名空间

一些麻烦

FlashDrive.h

#ifndef FLASHDRIVE_H 
#define FLASHDRIVE_H 
#include <iostream> 
#include <cstdlib> 

namespace cs52 { 

class FlashDrive { 
    friend FlashDrive operator+ (FlashDrive used1 , FlashDrive used2); 
    friend FlashDrive operator- (FlashDrive used3, FlashDrive used4); 

public: 

    FlashDrive& FlashDrive::operator=(int); 
    FlashDrive::FlashDrive(int); 
    FlashDrive& operator = (const FlashDrive& usedtotal){ 
     my_StorageUsed= usedtotal.my_StorageUsed; 
     return *this; 
    } 
    FlashDrive(); 
    FlashDrive(int capacity, int used, bool pluggedIn); 

    void plugIn(); 
    void pullOut(); 
    void writeData(int amount); 
    void eraseData(int amount); 
    void formatDrive(); 

    int getCapacity(); 
    void setCapacity(int amount); 
    int getUsed(); 
    void setUsed(int amount); 
    bool isPluggedIn(); 

private: 
    int my_StorageCapacity; // in kilobytes 
    int my_StorageUsed;  // in kilobytes 
    bool my_IsPluggedIn;  // am I attached to a computer? 
}extern drive1,drive2; 

inline FlashDrive operator+ (FlashDrive used1, FlashDrive used2) { 

    FlashDrive plus; 

    plus.my_StorageUsed = (used1.getUsed()+ used2.getUsed()); 
    return plus; 
} 
inline bool operator< (FlashDrive &lhs,FlashDrive &rhs) { 
    return (lhs.getUsed() < rhs.getUsed()); 
} 
inline bool operator> (FlashDrive &lhs,FlashDrive &rhs) { 
    return (operator <(rhs, lhs)); 
} 
inline FlashDrive operator - (FlashDrive used3, FlashDrive used4){ 
    FlashDrive minus; 
    minus.my_StorageUsed = (used3.getUsed()- used4.getUsed()); 
    return minus; 
}; 

} 
#endif 

FlashDrive.cpp

#include <iostream> 
#include <cstdlib> 
#include "FlashDrive.h" 

namespace cs52 { 

FlashDrive::FlashDrive() { 
    my_StorageCapacity = 0; 
    my_StorageUsed = 0; 
    my_IsPluggedIn = false; 
} 
FlashDrive::FlashDrive(int capacity, int used, bool pluggedIn) { 
    my_StorageCapacity = capacity; 
    my_StorageUsed = used; 
    my_IsPluggedIn = pluggedIn; 
} 
void FlashDrive::plugIn() { 
    my_IsPluggedIn = true; 
} 
void FlashDrive::pullOut() { 
    my_IsPluggedIn = false; 
} 
void FlashDrive::writeData(int amount) { 
    my_StorageUsed += amount; 
} 
void FlashDrive::eraseData(int amount) { 
    my_StorageUsed -= amount; 
} 
void FlashDrive::formatDrive() { 
    my_StorageUsed = 0; 
} 

int FlashDrive::getCapacity() { 
    return(my_StorageCapacity); 
} 
void FlashDrive::setCapacity(int amount) { 
    my_StorageCapacity = amount; 
} 
int FlashDrive::getUsed() { 
    return(my_StorageUsed); 
} 
void FlashDrive::setUsed(int amount) { 
    my_StorageUsed = amount; 
} 
bool FlashDrive::isPluggedIn() { 
    return(my_IsPluggedIn); 
} 
} 

Main.cpp的

#include <iostream> 
#include <cstdlib> 
#include "FlashDrive.h" 
void main() 
{ 
using namespace cs52; 
cs52::FlashDrive empty; 
cs52::FlashDrive drive1(10, 0, false); 
cs52::FlashDrive drive2(20, 0, false); 

drive1.plugIn(); 
drive1.formatDrive(); 
drive1.writeData(5); 
drive1.pullOut(); 

drive2.plugIn(); 
drive2.formatDrive(); 
drive2.writeData(1); 
drive2.pullOut(); 

// read in a FlashDrive... 
// the class designer for FlashDrive (that's you!) 
// gets to decide which fields matter and should be read in 
cs52::FlashDrive sample; 
cin >> sample; 

// print out a FlashDrive... 
// the class designer for FlashDrive (that's you!) 
// gets to decide which fields matter and should be printed 
cout << sample << endl; 

cs52::FlashDrive combined = drive1 + drive2; 
cout << "this drive's filled to " << combined.getUsed() << endl; 

cs52::FlashDrive other = combined – drive1; 
cout << "the other cup's filled to " << other.getUsed() << endl; 

if (combined > other) { 
    cout << "looks like combined is bigger..." << endl; 
} 
else { 
    cout << "looks like other is bigger..." << endl; 
} 

if (drive2 > other) { 
    cout << "looks like drive2 is bigger..." << endl; 
} 
else { 
    cout << "looks like other is bigger..." << endl; 
} 

if (drive2 < drive1) { 
    cout << "looks like drive2 is smaller..." << endl; 
} 
else { 
    cout << "looks like drive1 is smaller..." << endl; 
} 

// let's throw some exceptions... 

try { 
    empty = empty - combined; 
    cout << "something not right here..." << endl; 
} catch(std::logic_error) { 
// an exception should get thrown... 
// so the lines of code here should 
// be run, not the cout statement... 
} 

try { 
    drive2.writeData(10000); 
    cout << "something not right here..." << endl; 
} catch(std::logic_error) { 
// an exception should get thrown... 
// so the lines of code here should 
// be run, not the cout statement... 
} 

try { 
    cs52::FlashDrive f(-1, -1, false); 
    cout << "something not right here..." << endl; 
} catch(std::logic_error) { 
// an exception should get thrown... 
// so the lines of code here should 
// be run, not the cout statement... 
} 
} 

这里是构建错误 大部分是多余的

------构建开始:项目:FlashDriver,配置:调试Win32 ------ Build开始7/29/2013 4:32:24 AM。 InitializeBuildStatus:触摸“Debug \ FlashDriver.unsuccessfulbuild”。 ClCompile:Main.cpp c:\ documents and settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(25):error C2065:'cin' :未声明的标识符c:\ documents and settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(30):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(30):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(33):错误C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(33):error C2065: 'endl':未声明的标识符c: \ Documents and settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(35):error C2146: 语法错误:缺少';'之前标识符' - 'c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(35):error C2065:' - ': 未声明的标识符c:\ documents和设置\管理员\我的 文档\ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(35):错误C2146: 语法错误:缺少';'之前标识符'drive1'c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(36):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(36):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main。cpp(39):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(39):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(42):error C2065: 'cout':未声明的标识符c:\文件和 settings \ administrator \我的文档\ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(42):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ pr ojects \ flashdriver \ flashdriver \ main.cpp(46):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \我的文档\ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp (46):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(49):error C2065: ' COUT:未声明的标识符C:\文件和设置 \管理员\我的文档\ Visual Studio的 2010 \项目\ flashdriver \ flashdriver \ main.cpp中(49):错误C2065: 'ENDL':未声明的标识符C:\文件和 设置\管理员\我的文档\视觉工作室 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(53):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(53):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(56):error C2065 : 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(56):error C2065: 'endl':未声明的标识符c :\ documents和 settings \ administ rator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(62):error C2146: 语法错误:缺少';'之前标识符' - 'c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(62):error C2065:' - ': 未声明的标识符c:\ documents and settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(62):error C2146: 语法错误:缺少';'在标识符'combined'之前c:\ documents 和settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(63):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(63):error C2065: 'endl':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(72):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \我的文档\ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(72):错误C2065 : 'endl':未声明的标识符c:\ documents和 settings \ administrator \我的文档\ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main。cpp(81):error C2065: 'cout':未声明的标识符c:\ documents和 settings \ administrator \ my documents \ visual studio 2010 \ projects \ flashdriver \ flashdriver \ main.cpp(81):error C2065: 'endl':未声明的标识符FlashDrive.cpp生成代码...

构建失败。

时间经过00:00:02.50 ==========构建:0成功,1失败,0最新,0跳过==========

+1

使用'的std :: cin'等 – lapk

+1

或写'使用命名空间std'在乞讨他们的资格的文件... –

+0

你需要'std :: cout','std :: cin'和'std :: endl'而不是'cout','cin'和'endl'。 – juanchopanza

cout/cin/endlSTD名字空间,你需要用STD命名空间

std::cout 
std::cin 
std::endl 
+0

:facepalm:谢谢 – rezivor

+0

@rezivor很高兴帮助! :) – billz