-6
別のクラスへの参照としてオブジェクトを送信しようとしています。しかし、私はこのエラーで打たれました。私はどのように移動するか分からない。私が間違っているところで私を助けてください。お互いを参照するC++クラスをコンパイルする際のエラー
#include<iostream>
#include<conio.h>
using namespace std;
class reg_view
{
public:
void getdetails(reg_model *ptr1)
{
cout<<"Enter id: ";
cin>>ptr1->id;
cout<<"Enter name: ";
cin>>ptr1->name;
}
};
class reg_model
{
private:
int id;
char name[20];
public:
};
class reg_db
{
public:
void insert(reg_model *ptr2)
{
cout<<ptr2->id<<endl<<ptr2->name<<endl;
}
};
class reg_ctrl
{
public:
void fun1()
{
reg_view rv1;
reg_model rm1;
rv1.getdetails(&rm1);
reg_db rd1;
rd1.insert(&rm1);
}
};
int main()
{
reg_ctrl rc1;
rc1.fun1();
return 0;
}
他のクラスへの参照としてオブジェクトを送信しようとしています。私はエラーを取得
error: 'reg_model' has not been declared
In member function 'void reg_view::getdetails(int*)':|
request for member 'id' in '* ptr1', which is of non-class type 'int'|
request for member 'name' in '* ptr1', which is of non-class type 'int'|
In member function 'void reg_db::insert(reg_model*)':|
'int reg_model::id' is private|
within this context|
'char reg_model::name [20]' is private|
within this context|
In member function 'void reg_ctrl::fun1()':|
no matching function for call to 'reg_view::getdetails(reg_model*)'|
candidate is:|
void reg_view::getdetails(int*)|
no known conversion for argument 1 from 'reg_model*' to 'int*'|<b
コンパイラがまだ見ていない型へのポインタを逆参照することはできません。 'reg_model'のクラス定義をファイルの先頭に移動します。 –
'reg_view'をコンパイルする時点で、' reg_model'は実際には宣言されていません。 'reg_view'の上に' reg_model'を移動してください。 –
また 'ptr1-> id ...'は、 'reg_model'のクラス減速ではこれらのフィールドがプライベートであると考えると機能しません。 –