私はクラスに構造体があり、構造体から変数を呼び出す方法がわかりません、助けてください;)
#include <iostream>
using namespace std;
class E
{
public:
struct X
{
int v;
};
};
int main(){
E object;
object.v=10; //not work
return 0;
}
struct B
内でclass A
を宣言したからといって、class A
のインスタンスが自動的にメンバーとしてstruct B
のプロパティを持つことを意味するわけではなく、メンバーとしてのstruct B
のインスタンス。
スコープのほかに、2つのクラス(A
とB
)の間に真の関係はありません。
struct A {
struct B {
int v;
};
B inner_object;
};
int
main (int argc, char *argv[]) {
A object;
object.inner_object.v = 123;
}
実際に何を達成しようとしているのかは明確ではありませんが、2つの選択肢があります。
class E
{
public:
struct X
{
int v;
};
// 1. (a) Instantiate an 'X' within 'E':
X x;
};
int main()
{
// 1. (b) Modify the 'x' within an 'E':
E e;
e.x.v = 9;
// 2. Instantiate an 'X' outside 'E':
E::X x;
x.v = 10;
}
E
クラスにはstruct X
型のメンバーがありません。ネストされたstruct X
を定義しました(つまり、新しい型を定義しました)。
試してください:
#include <iostream>
class E
{
public:
struct X { int v; };
X x; // an instance of `struct X`
};
int main(){
E object;
object.x.v = 1;
return 0;
}
次のように、クラスから構造体を定義する必要があります。
#include <iostream>
using namespace std;
struct X
{
int v;
};
class E
{
public:
X var;
};
int main(){
E object;
object.var.v=10;
return 0;
}
構造体に名前を付けない場合は機能します
class E
{
public:
struct
{
int v;
};
};
それ以外の場合は、X xを記述し、e.x.vを記述します