私はすぐにサイトを検索して同様の問題を発見していないことを指摘したいと思います。 ノードにオブジェクトを置くことができない人には質問がありましたが、私の問題はこれです。オブジェクトにデフォルトのコンストラクタがなく、クラス定義内にオブジェクトを作成できない場合、どのようにオブジェクトをノードに配置しますか?
オブジェクトをノード内に置くことはできません。オブジェクトのデフォルトのコンストラクタを作成することはできません。少なくとも具体的に
)そのクラス定義の内部ではない:
私が与えられている以下のクラスの雇用者:そこに、このクラスにはデフォルトコンストラクタがありませんし、私は午前あなたが見ることができるように
class Employer
{
public:
Employer(string x, int a, int b, int c);
string getname() const { return name; }
private:
string name;
int age, sal, hire;
};
Employer::Employer(string x, int a, int b, int c) : name(x), age(a), sal(b), hire(c) { }
tは1(!これらはルールです。)
を作成させ、私は以下のクラスノード作成している:あなたは、私はノードのポインタを保持しているノードクラスを作成したい見ることができるよう
class Node
{
public:
Employer emp;
Node* link;
Node(Employer);
};
Node::Node(Employer x)
{
emp= x;
link=NULL;
}
をその中にオブジェクトのEmployerがあります。
残念ながら、これは機能しません。 「雇用のEMP;」.....メンバー初期化するデフォルトコンストラクタが見つからない
クラスの雇用主は、デフォルトのコンストラクタを持っていないので、基本的に何が起こるかは次のとおりです。
E2279:私は、次のエラーメッセージを得続けます「Employer emp」ではなく「int n」であった場合と同じように、Nodeクラスのコンパイラはコンパイラによって「認識」されません。
は、だから私の質問はこれです:私はクラスの雇用者には何も追加/変更することなく、ノードのオブジェクト雇用者を置くことができますどのように
(つまり、私はクラスの雇用者へのデフォルトコンストラクタを追加することはできませんも私が追加することができます"友人クラスノード"のようなものですが、ルールはそのままです)
私はプログラミングに慣れていないので、私はまだテンプレートを教えていないので、私は追加したいと思いますそのうちのどれかを使用することは許されません。既に私があなたに与えたツール(クラス、関数、ポインタなど)
素晴らしい!できます!返事をくれた皆さん、ありがとう!あなたは本当に助けになりました。そして、どんどん速くなりました! (私は、なぜ私が雇用者を価値あるものではなく、参考にして渡すべきなのかまだ分かりませんが、私はそれを価値によって渡していますが、効いていますが、 ..しかしそれはまだ動くので私は混乱している..) –