2016-04-22 4 views
-2

Qt Creatorを初めて使用しています。データベースを定義する際に、パラメータとしてvectorを使用します。私はすでにデータベース用のコードを持っています。ここではオブジェクトをインスタンス化するために何をしています。Qt Creatorエラー - 「タイプに名前を付けません」

public: 
    vector<CEmployee*> records; 
    CDatabase all_emps(records); 

私はしかし、「レコードがタイプではない」と私は右のそれの上にベクトルとしてレコードを定義しましたので、私はかなり理由を理解していないというエラーを取得しておきます。私は単純にベクトルにレコードを変更しようとしましたが、それは私のコードの他の場所に他のエラーを作成します。誰かがこれを修正する方法の方向で私を指すことができれば、それは非常に高く評価されるだろう。前もって感謝します!

+0

;':

は多分これは、より理にかなって?あなたが[しばらくお待ちください](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice)。もしあなたがそうでなければ 'ベクトルの前で' std :: 'を忘れた – NathanOliver

+0

ベクトルヘッダが含まれていますか?そして 'std :: vector'を使います。 – Unimportant

+0

これらのオプションの両方を試しましたが、引き続き同じエラーが発生します。ベクタラインはエラーが表示される場所ではありません。 CDatabase all_emps(records)行に表示されます – lantakli

答えて

0

まあ、recordsは型ではなく、メンバ変数の名前です。おそらく、このことを意味:

public: 
    // member variable declaration 
    std::vector<CEmployee*> records; 
    // method declaration, taking a vector of CEmployee* as an argument 
    CDatabase all_emps(std::vector<CEmployee*> records); 

私は、わかりませんけれども、実装の詳細をのようだ、そしてなぜall_empsCDatabaseを返すようrecordsは、公開さ一員である理由。あなたはstd名前空間を使用して `使用してい

private: 
    /// A database used to manage the data. 
    CDatabase m_db; 
public: 
    /// Returns all employee records from the database. 
    std::vector<CEmployee*> all_employees(); 
0
  1. は、あなたがどこか#include <vector>using std::vectorを持っていることを確認し、または単にstd::接頭辞を使用しています。

  2. クラス定義には、CDatabase all_emps(records);の構文を使用できません。これはメンバ関数宣言として扱われます。ここでは、パラメータ型をrecords(パラメータ名は不要、戻り型はCDatabase)と指定します。 recordsはタイプではありません。

    1. 使用list initialization

    は、次の2つの選択肢があり

    Database all_emps{records}; 
    
  3. 使用コンストラクタとmember initializer list

    MyClass 
    { 
        vector<CEmployee*> records; 
        CDatabase all_emps; 
    
    public: 
        MyClass(/* possibly vector<CEmployee*> const& records*/) : 
        records(/* possibly records*/), 
        all_emps(records) 
        { 
        } 
    
        ... 
    }; 
    
+0

私はそれがまさに私がやろうとしているとは思わない。私はCDatabase(すでに作成した別の.hファイル)にインスタンスを作成する必要があります。この.hファイルのコンストラクタでは、CDatabaseはベクトルを受け取ります。メンバーイニシャライザーリストがどこに当てはまるのか分かりません – lantakli

関連する問題