[解決済み] コンテナクラス シーケンス c++
2022-02-17 14:09:40
質問
私はc++でプログラミングをするのが初めてなので、どうか助けていただけませんか?私のコードがコンパイルできません というエラーが発生し、原因がわかりません。これは、私が書いた実装ファイルです。
# include <algorithm>
#include <cassert>
#include "sequence1.h" // See below
using namespace std;
namespace main_savitch_3{
const sequence::size_type sequence:: CAPACITY;
sequence::sequence(){
current_index = 0;
used = 0;
}
void sequence::start(){
current_index= 0;
}
void sequence::advance(){
if (is_item()== true)
{current_index++;
}
}
void sequence::insert(const value_type& entry){
int i;
assert (size()< CAPACITY);
if (is_item() == false){
current_index=0;}
for (i= used, i>current_index,i--){
data[i] = data [i-1];}
data[current_index]= entry;
used++;
}
void sequence:: attach(const value_type& entry){
int i;
assert (size()< CAPACITY);
if (is_item() == false){
data[used-1]= entry;}
for (i= used, i> current_index, i--){
data[i]= data[i+1];
}
data[current_index]= entry;
used++;
}
void sequence::remove_current(){
int i;
assert(is_item()== true);
for (i= current_index + 1, i< used - 1, i++){
data [i]= data[i+1];
used--;
}
}
sequence::size_type sequence::size() const{
return used;}
bool is_item() const {
if(current_index< used){
return true;}
}
sequence::value_type sequence:: current() const{
return data[current_index];}
}
以下は、私の宿題として提供されたヘッダーファイルです。
// FILE: sequence1.h
/*
CLASS PROVIDED: sequence (part of the namespace main_savitch_3)
There is no implementation file provided for this class since it is
an exercise from Section 3.2 of "Data Structures and Other Objects Using C++"
TYPEDEFS and MEMBER CONSTANTS for the sequence class:
typedef ____ value_type
sequence::value_type is the data type of the items in the sequence. It
may be any of the C++ built-in types (int, char, etc.), or a class with a
default constructor, an assignment operator, and a copy constructor.
typedef ____ size_type
sequence::size_type is the data type of any variable that keeps track of
how many items are in a sequence.
static const size_type CAPACITY = _____
sequence::CAPACITY is the maximum number of items that a sequence can hold.
CONSTRUCTOR for the sequence class:
sequence( )
Postcondition: The sequence has been initialized as an empty sequence.
MODIFICATION MEMBER FUNCTIONS for the sequence class:
void start( )
Postcondition: The first item on the sequence becomes the current item
(but if the sequence is empty, then there is no current item).
void advance( )
Precondition: is_item returns true.
Postcondition: If the current item was already the last item in the
sequence, then there is no longer any current item. Otherwise, the new
current item is the item immediately after the original current item.
void insert(const value_type& entry)
Precondition: size( ) < CAPACITY.
Postcondition: A new copy of entry has been inserted in the sequence
before the current item. If there was no current item, then the new entry
has been inserted at the front of the sequence. In either case, the newly
inserted item is now the current item of the sequence.
void attach(const value_type& entry)
Precondition: size( ) < CAPACITY.
Postcondition: A new copy of entry has been inserted in the sequence after
the current item. If there was no current item, then the new entry has
been attached to the end of the sequence. In either case, the newly
inserted item is now the current item of the sequence.
void remove_current( )
Precondition: is_item returns true.
Postcondition: The current item has been removed from the sequence, and the
item after this (if there is one) is now the new current item.
CONSTANT MEMBER FUNCTIONS for the sequence class:
size_type size( ) const
Postcondition: The return value is the number of items in the sequence.
bool is_item( ) const
Postcondition: A true return value indicates that there is a valid
"current" item that may be retrieved by activating the current
member function (listed below). A false return value indicates that
there is no valid current item.
value_type current( ) const
Precondition: is_item( ) returns true.
Postcondition: The item returned is the current item in the sequence.
VALUE SEMANTICS for the sequence class:
Assignments and the copy constructor may be used with sequence objects.
*/
#ifndef MAIN_SAVITCH_SEQUENCE_H
#define MAIN_SAVITCH_SEQUENCE_H
#include <cstdlib> // Provides size_t
namespace main_savitch_3
{
class sequence
{
public:
// TYPEDEFS and MEMBER CONSTANTS
typedef double value_type;
typedef std::size_t size_type;
static const size_type CAPACITY = 30;
// CONSTRUCTOR
sequence( );
// MODIFICATION MEMBER FUNCTIONS
void start( );
void advance( );
void insert(const value_type& entry);
void attach(const value_type& entry);
void remove_current( );
// CONSTANT MEMBER FUNCTIONS
size_type size( ) const;
bool is_item( ) const;
value_type current( ) const;
private:
value_type data[CAPACITY];
size_type used;
size_type current_index;
};
}
#endif
これらは、コンパイラが私に与える間違いです。また、私のコードに論理的な間違いはないでしょうか?
お忙しい中、ありがとうございました。
これは、私の採点に使用されるsequence_examファイルへのリンクです www-cs.ccny.cuny.edu/~esther/CSC212/HW/sequence_exam.cxx. jgraspを使って、ヘッダーファイル、実装ファイル、試験コードをコンパイルしてリンクすると、私のすべての関数にmain_savitch_3::sequenceへの未定義参照が出ています。コンパイルが悪いのでしょうか?そうでなければ、私の実装は完全にコンパイルされます。
どうすればいいですか?
まずはよく調べてみてほしいのですが、一番上のエラーはこちらです ;)
for (i= used, i>current_index,i--){
であるべきです。
for (i = used; i > current_index; i--)
また
bool is_item() const {
if(current_index< used){
return true;
}
}
であるべきです。
bool sequence::is_item() const {
if(current_index< used){
return true;
}
}
つまり、非メンバー関数の const を宣言することはできません。const はデータメンバーを保護するためのもので、非クラス関数はデータメンバーを持ちません。
関連
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] 未定義の動作とシーケンスポイント
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み】静的定数文字列(クラスメンバ)
-
[解決済み】なぜenumクラスはプレーンなenumより好ましいのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】C++の余分な資格エラー
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)