J'ai une classe comme ceci:
ERROR: a nonstatic member reference must be relative to a specific object
3 Réponses :
Vous devez passer A code> objet ( ceci code> ici) à g code> méthode pour pouvoir accéder à A code> Data. Par exemple. VIA Paramètre: void f()
{
struct B
{
void g(const A& a)
{
printf("%d", a.t); //using t
}
};
B b;
b.g(*this);
}
Une instance de la classe locale B code> ne contient aucun aspect d'un objet de la classe A code>. Afin d'accéder aux variables des membres de A code> dans b :: g () code>, vous devrez transmettre un pointeur / référec sur une instance de A Code> to B :: g () code>. class A
{
protected:
int t = 10;
public:
void f()
{
struct B
{
void g(A* a)
{
print(a->t);
}
};
B b;
b.g(this);
}
};
Définition de Peu importe où vous définissez une classe, vous avez besoin d'une instance pour appeler une méthode non statique. Faire des amis ne suffirait pas non plus, parce que vous avez toujours besoin d'une instance B code> à l'intérieur d'une méthode de A code> ne fait pas d'instances de A code> contenant un B code>. code>, que vous devez passer à B code> d'une manière ou d'une autre: p> class A {
protected:
int t = 10;
public:
void f() {
struct B {
void g(A& a) {
int x = a.t;
}
};
B b;
b.g(*this);
}
};