2013-07-29 44 views
0

我有,據我可以告訴我所做的一切都是正確命名空間定義和異常

下面是我的代碼,並建立輸出定義一個命名空間

一些麻煩

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

回答

6

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

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

:facepalm:謝謝 – rezivor

+0

@rezivor很高興幫助! :) – billz