-3

このエラーを受け取りましたが、Google 検索にはあいまいすぎるようですので、あなたに引き渡します! Account オブジェクトを保持するリンク リスト オブジェクトを作成しようとしています。

#include "Customer.h"
#include "LinkedList.h"
#include "Account.h"
#include "Mortgage.h"
#include "CurrentAcc.h"
#include "JuniorAcc.h"
#include "transaction.h"

#include <iostream>
#include <string>

using namespace std;


string name;
string address;
string telNo;
char gender;
string dateOfBirth;
list<Account> accList;  // Error
list<Mortgage> mortList;  //Error

リンク リストを適切に宣言していないように感じますが、それ以外の方法が思い浮かびません。

私が感じている次のコードは、私の不適切な宣言の結果です。

void Customer::openCurrentAccount(int numb, double bal, int cl, string type, double Interest){
Current acc(numb,bal,cl,type,Interest); //Error - Expression must have class type.
accList.add(acc);
}

そして、これがリンク リスト クラスの .h ファイルの作成です。

#pragma once

#include <iostream>
using namespace std;

template <class T>
class node;

template <class T>

class list
{

public:
list() { head = tail = NULL; }
~list();
void add(T &obj);
T remove(int ID);
void print(ostream &out);
T search(int ID);

private:
node<T> *head, *tail;
};

template <class T>
class node

{ public: node() {next = NULL;} //private: T data; ノード*次; };

template <class T>
list<T>::~list()
{
}
4

1 に答える 1

3

listグローバル名前空間で呼び出される独自のクラスを定義using namespace std;し、そのヘッダーを挿入して、標準ライブラリ全体をグローバル名前空間にダンプします。listこれは、グローバル名前空間で使用可能な2つのテンプレートがあることを意味します。これにより、あいまいさが発生し、コンパイルエラーが発生します。

あなたがすべき:

  • using namespace std;ソースファイルを入れないでください
  • そのヘッダーを使用する人に名前空間の汚染を課すため、ヘッダーに入れないでください
  • グローバル名前空間に独自の宣言を入れないでください
  • 独自の宣言に標準ライブラリのものと同じ名前を付けることは避けてください
  • 独自のバージョンを作成するのではなく、標準のライブラリ機能を使用します。
于 2012-11-28T11:54:23.130 に答える