2016-10-23 4 views
-2

にそれを設定する方法構文が含まれていない場合は、私にはデフォルトコンストラクタがクラスに存在しない「ベクター」エラーに私のベクトルがゼロ

main.cppに

#include <iostream> 
#include <string> 
#include "myVector.h" 

using namespace std; 

int main() 
{ 
    vector<int> myvecA; 
    cout << "Vector A size: " << myvecA.size() << endl; 

system("Pause"); 
return 0; 
} 

を取得myVector.h

#include <iostream> 
using namespace std; 


template <class V> 
class vector{ 

public: 
vector(V x) { 
    bool(x = 0) 
     sizearr = 0; 
    if (x != 0) 
     return x; 
    sizearr = x; 

} 

    V size(); 

private: 

    V sizearr; 

}; 

template <class V> 

V vector<V>::size() { 
    return sizearr; 
} 
私はそれを作る方法がわからない

よう

vector<int> myvecA; 
場合

は、構造体を0に設定する構造体を含んでいないので、サイズを0に戻すことができます。

私の質問があまり明確でない場合はお詫び申し上げます。私はちょうど助けを探すので、私は学ぶことができます。私はC++があまりよくありません。

+1

すでに 'std :: vector1'があります。 [不快な "using namespace std"(http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)の使用法]を使用し、独自の 'vector'を宣言するだけです物事を混乱させる。あなたは完全に忘れる必要があります "using namespace std;" C++に存在します。それは悪いプログラミングの練習です。 –

+0

待って、自分の 'vector'クラスを宣言していて、デフォルトのコンストラクタを提供していないのですか?エラーメッセージには何が表示されますか?単純に 'std :: vector ' BTWを使うのはなぜですか? –

+2

'bool(x = 0)sizearr = 0;'は構文エラーです。あなたのコンパイラは何かを言う必要があります –

答えて

0

あなたはまた、コンストラクタは通常の機能に使用する意味で「戻る」していないクラスに

template <class V> class vector { 

public: 
explicit vector(): sizearr(0) {} 
} 

をデフォルトコンストラクタを提供する必要があります。コンストラクタはクラスの内部を初期化し、クラスのオブジェクトに必要なメモリはnewキーワードを使用して作成されるか、スタックに割り当てられます。


もう一つ、あなたがしなければならない(この場合std::vectorで)既存のクラスに干渉からクラスを防ぐためです。これを行う方法は、ヘッダファイルからusing namespace stdの宣言を削除することです。 using namespace stdを持つことは、標準std::vectorを使用するファイルにヘッダーを含めると、新しいクラスが既存のクラスと衝突するか、またはその逆の場合に問題になります。

using namespace X宣言型を使用しないことも推奨されています。名前空間は名前空間の競合を防ぎ、名前空間の名前が名前空間の目的と直接衝突するからです。 using namespace Xを使用する唯一推奨される場所は、「プライベート」.cppファイル内の特定の名前空間の機能を実装する場合です。

希望に役立ちます。

+1

これは恐らく 'std :: vector'と衝突するでしょう –

+0

@πάνταῥεῖ私の前提は、OPがコードのどこかで' #include 'を使用していないということです。 – smac89

+2

@smac89どのヘッダも他のヘッダを含むかもしれないので、その上に。この修正は、OPが 'namespace std;を使って停止することです。 –

関連する問題