[英]Namespace Definitions & Exceptions
我在定義名稱空間時遇到了一些麻煩
據我所知,我做對了所有事情
下面是我的代碼和構建輸出
閃存盤
#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 ------構建開始於2013年7月29日4:32:24 AM。 InitializeBuildStatus:觸摸“ Debug \\ FlashDriver.unsuccessfulbuild”。 ClCompile:Main.cpp c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(25):error C2065:'cin':未聲明的標識符c:\\ documents和settings \\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(30):錯誤C2065:'cout':未聲明的標識符c:\\文檔和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\ Projects \\ FlashDriver \\\\ flashdriver \\ main.cpp(30):錯誤C2065:'endl':未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(33):錯誤C2065 :'cout':未聲明的標識符c:\\ documents和settings \\ administrator \\我的文檔\\ Visual Studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(33):錯誤C2065:'endl':未聲明的標識符c:\\ documents和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ flashdriver \\ flashdriver \\ main.cpp(35):錯誤C2146:語法錯誤:缺少';' 標識符'–'c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(35)之前:錯誤C2065:'–':未聲明的標識符c:\\ documents和settings \\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ flashdriver \\ flashdriver \\ main.cpp(35):錯誤C2146:語法錯誤:缺少';' 標識符'drive1'之前c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(36):error C2065:'cout':未聲明的標識符c:\\ documents和settings \\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(36):錯誤C2065:'endl':未聲明的標識符c:\\文檔和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\ Projects \\ FlashDriver \\ flashdriver \\ main.cpp(39):錯誤C2065:'cout':未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(39):錯誤C2065 :'endl':未聲明的標識符c:\\ documents和settings \\ administrator \\我的文檔\\ Visual Studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(42):錯誤C2065:'cout':未聲明的標識符c:\\ documents和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(42):錯誤C2065:'endl':未聲明的identi 正確的c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(46):錯誤C2065:'cout':未聲明的標識符c:\\ documents和settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(46):錯誤C2065:“ endl”:未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main .cpp(49):錯誤C2065:'cout':未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(49):錯誤C2065:'endl' :未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(53):錯誤C2065:'cout':未聲明的標識符c:\\ documents和settings \\ administrator \\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(53):錯誤C2065:“ endl”:未聲明的標識符c:\\ documents和 設置\\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(56):錯誤C2065:'cout':未聲明的標識符c:\\文檔和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\ Projects \\\\ flashdriver \\ flashdriver \\ main.cpp(56):錯誤C2065:'endl':未聲明的標識符c:\\ documents和settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(62):錯誤C2146:語法錯誤:缺少';' 標識符'–'c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(62)之前:錯誤C2065:'–':未聲明的標識符c:\\ documents和settings \\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(62):錯誤C2146:語法錯誤:缺少';' 標識符'combined'之前c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(63):error C2065:'cout':未聲明的標識符c:\\ documents和settings \\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(63):錯誤C2065:'endl':未聲明的標識符c:\\文檔和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\ Projects \\ FlashDriver \\ flashdriver \\ main.cpp(72):錯誤C2065:'cout':未聲明的標識符c:\\ documents and settings \\ administrator \\ mydocuments \\ visual studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(72):錯誤C2065 :'endl':未聲明的標識符c:\\ documents and settings \\ administrator \\我的文檔\\ Visual Studio 2010 \\ projects \\ flashdriver \\ flashdriver \\ main.cpp(81):錯誤C2065:'cout':未聲明的標識符c:\\ documents和設置\\管理員\\我的文檔\\ Visual Studio 2010 \\項目\\ FlashDriver \\ FlashDriver \\ Main.cpp(81):錯誤C2065:'endl':未聲明的Iden tifier FlashDrive.cpp生成代碼...
建立失敗。
經過的時間00:00:02.50 ==========構建:0成功,1失敗,0最新,跳過0 ==========
cout/cin/endl
從STD命名空間,則需要使用std名字空間要符合他們
std::cout
std::cin
std::endl
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.