#include<iostream>
#include<stdlib.h>
#include"header_complex.h"
using namespace std;
class Complex
{
private:
float real,imag;
public:
Complex(); //default cnstructor
Complex(float, float); //parametrize constructor
void set_real(float);
void set_imag(float);
float get_real();
float get_imag();
void input();
void display();
};
int main()
{
Complex c1; // object creation
c1.display();
c1.input();
c1.display();
return EXIT_SUCCESS;
}
//Functions definations
Complex::Complex(float a=0, float b=0)
{
real = a;
imag = b;
}
void Complex::set_real(float a)
{
a = real;
}
void Complex::set_imag(float a)
{
a = imag;
}
float Complex::get_real()
{
return real;
}
float Complex::get_imag()
{
return imag;
}
void Complex::input(){
cout << "Enter Real part ";
cin >> real;
cout << "Enter Imaginary part " ;
cin >> imag;
}
void Complex::display()
{
cout << "Real part is " << real;
cout << "Imaginary part is " << imag;
}
答えて
エラーLNK2019:未解決の外部 シンボル "パブリック:__thiscall コンプレックス::コンプレックス(無効)" (?? 0Complex @@ QAE @ XZ) 関数_main
エラーメッセージを読み、理解することは、先に進むことを学ぶために非常に重要なスキルです。 "Unresolved external"は、識別子を使用しているが、付属の.objファイルと.libファイルのいずれの識別子も定義されていないと、リンカが生成するエラーメッセージです。
Complex :: Complex(void)は、不明な識別子です。これは、引数をとらないComplexクラスのコンストラクタです。あなたはそれを宣言しました、あなたはそれを使用します、あなたはそれのためのコードを書かなかっただけです。
エラーリストウィンドウのエラーメッセージを選択しF1キーを押すと、リンカーやコンパイラのエラーに関するヘルプが表示されます。
しかし、私が2つのコンストラクタをマージしたのは合法的です。 –
それらをマージすることはできますが、そうした場合、クラス定義に 'Complex();'を宣言するべきではありません。 'Complex(float、float);のみを宣言し、パラメータのデフォルト値を提供します。 –
関数定義でデフォルトパラメータを指定することはできません。関数宣言でそれを行う必要があります。代わりに、2つのコンストラクタを宣言する、それは誰もがそう漠然とエラーメッセージについて説明しますなぜ私が(理解していない
Complex::Complex(float a, float b)
あなたは正しいですが、既定のコンストラクタ定義を追加した後、Linux上でg ++を使用して私のためにコンパイルしました。さらに、-pedanticフラグがスローされました。 –
これは完全に真実ではありません。関数定義でのデフォルトパラメータの指定は、宣言で指定されていなければ、完全に正当です。 「C++関数のデフォルト引数」(http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr237)を確認することができます。 .htm)を参照してください。 –
私はこの概念を混乱させる。私は2つのコンストラクタをマージできるかどうか? –
になるように、デフォルト値を削除し、あなたの定義に続いて1
Complex(float a=0, float b=0);
のように宣言エラーメッセージをコピーして貼り付けることなく、「リンカエラー」と呼ばれます)。つまり、次のように変更して、Linux上でプログラムをコンパイルしてリンクすることができました。
1)複雑なクラス定義をheader_complex.h
というヘッダーファイルに移動しました。これはメインプログラム#include
です。
2)私は、デフォルトコンストラクタの定義を追加しました:
Complex::Complex() : real(0), imag(0) {}
3)私は、コマンドラインに-lstdc++
を追加しました:
gcc complex.cpp -lstdc++
ところで、私はあなたがするつもりだと思います表示方法を変更してendl
を追加したい場合:
cout << "Real part is " << real << endl;
cout << "Imaginary part is " << imag << endl;
Emm ...を参照してくださいそれを使用しながら、あなたがデフォルトコンストラクタが欠落しているMS:
Complex c1; // here's the error - you have no defined Complex::Complex() {} method
- 1. 初心者のためのC#での単純なネットワークプログラミング?
- 2. Pact JVM Java初心者初心者/初心者/チュートリアルプロジェクトですか?
- 3. 初心者で簡単なjavascript
- 4. 単純なQt C++アプリケーションのリンカエラー
- 5. デバッグCコードは初心者です
- 6. 関数、単純な暗号化初心者レベル
- 7. C#初心者
- 8. 初心者の方 - 簡単な方法で終了する
- 9. Cでのスワップの問題[初心者]
- 10. 単純なクラスプログラムのコンパイル中にエラーが発生する
- 11. 初心者のための単純化を試してみる
- 12. C++初心者/中級者向けのプロジェクトですか?
- 13. MySQLの簡単な初心者のクエリ?
- 14. C#ソケットプログラミング初心者
- 15. 初心者C++ドローハウスプログラム
- 16. C++初心者は
- 17. C++初心者:デストラクタ
- 18. c初心者rand()
- 19. 初心者のHibernateの問題 - 単純ではない例外を使った簡単なマッピング!
- 20. 初心者C++ - いくつかの簡単な計算
- 21. Qt C++簡単な初心者の質問
- 22. [C初心者] GTK +と初心者の質問
- 23. C(初心者)のセグメンテーションフォールト
- 24. Androidでの初心者 - OnclickListeners
- 25. 初心者プログラマーは単体テストを使うべきですか?
- 26. php初心者の質問です。文
- 27. 初心者が簡単なドロップダウンメニューで苦労している
- 28. 初心者初心者アヤックスへのヒント
- 29. は初心者質問C#
- 30. C++:Eigen Library初心者ソート
コードをフォーマットしてください。ありがとうございます。 – ThomasMcLeod
{}ボタンを使用してソースコードをフォーマットしてください。 –
問題は何ですか。エラーはありますか?何がうまくいかない - 詳細を含めるのを恐れないでください。 – nos