私は、パラメータとしてクラスオブジェクトを受け取る機能を持っているかどうかはわかりませんよ。助けがありますか?ここでは、以下の例です。
#include<iostream>
void function(class object); //prototype
void function(class tempObject)
{
//do something with object
//use or change member variables
}
基本的に、クラスオブジェクトをパラメーターとして受け取る関数を作成し、tempObject.variable
などの関数内でそれらのパラメーターを使用する方法について混乱しています。
これは混乱のようなものであれば申し訳ありませんが、私はC++の比較的新しいです。
class
のみ*クラス定義を導入するために使用されるキーワードです。ローカルオブジェクトとしてまたは関数のパラメータのいずれかとして、新しいクラスのインスタンスを宣言するときにあなただけの(範囲内になければなりません)クラスの名前ではなく、キーワードclass
そのものを使用しています。
例えば.
class ANewType
{
// ... details
};
これは、クラス型であると呼ばれる新しいタイプANewType
を定義します。
次に、これを関数宣言で使用できます。
void function(ANewType object);
その後、タイプANewType
のオブジェクトを関数に渡すことができます。オブジェクトは関数パラメーターにcopiedされるため、基本型と同様に、パラメーターを変更しようとしても関数内のパラメーターのみが変更され、オブジェクトには影響しません最初に渡されました。
あなたは、関数本体内のコメントで示されるように関数の外でオブジェクトを変更したい場合は、参照(またはポインタ)でオブジェクトを取る必要があります。例えば。
void function(ANewType& object); // object passed by reference
関数本体でobject
のいずれかの使用は機能していないコピーに渡された実際のオブジェクトを参照することをこれは、構文の手段。すべての変更はこのオブジェクトを変更し、機能が完了すると表示されます。
[* class
キーワードは、テンプレートの定義に使用されるが、それは別の被験者のさ。]
最も単純な時:
#include <iostream>
using namespace std;
class A {
public:
A( int x ) : n( x ){}
void print() { cout << n << endl; }
private:
int n;
};
void func( A p ) {
p.print();
}
int main () {
A a;
func ( a );
}
もちろん、あなたはおそらく、オブジェクトを渡すために参照を使用する必要がありますが、私はあなたがまだそれらに持っていない疑いがあります。
クラスinstances(オブジェクト)を渡したい場合は、
void function(const MyClass& object){
// do something with object
}
または
void process(MyClass& object_to_be_changed){
// change member variables
}
一方、class自体を「渡す」場合
template<class AnyClass>
void function_taking_class(){
// use static functions of AnyClass
AnyClass::count_instances();
// or create an object of AnyClass and use it
AnyClass object;
object.member = value;
}
// call it as
function_taking_class<MyClass>();
// or
function_taking_class<MyStruct>();
と
class MyClass{
int member;
//...
};
MyClass object1;
私も同じことを求めていました。別の解決策は、メソッドをオーバーロードできることです。
void remove_id(EmployeeClass);
void remove_id(ProductClass);
void remove_id(DepartmentClass);
呼び出しでは、引数はそれに応じて渡すオブジェクトに適合します。しかし、あなたは自分自身を繰り返す必要があります
void remove_id(EmployeeClass _obj) {
int saveId = _obj->id;
...
};
void remove_id(ProductClass _obj) {
int saveId = _obj->id;
...
};
void remove_id(DepartmentClass _obj) {
int saveId = _obj->id;
...
};