访问存储在变量引用的 class 对象中的变量
Access to variables stored in the class object referenced by the variable
我有摘要 class Organizm
,我在其中存储对 class Swiat
的引用。我不知道如何访问我的 Organizm
引用的对象变量。最好的解释是我的代码:
Organizmy.h
#pragma once
class Swiat;
class Organizm
{
public:
Swiat& swiat;
char symbol = '?';
int sila = 0;
int inicjatywa = 0;
int x=0 , y=0;
virtual void Akcja()=0;
virtual void Kolizja()=0;
virtual void Rysowanie()=0;
Organizm(Swiat& swiat, char symbol, int sila, int inicjatywa, int x, int y);
};
Organizmy.cpp
#include "Organizm.h"
#include <iostream>
using namespace std;
void Organizm::Rysowanie()
{
cout << "Hej jestem organizmem" << endl;
}
Organizm::Organizm(Swiat& swiat, char symbol, int sila, int inicjatywa, int x, int y)
:swiat(swiat)
{
this->symbol = symbol;
this->sila = sila;
this->inicjatywa = inicjatywa;
this->x = x;
this->y = y;
}
Zwierze
(Organizmy
的 sub class 和 Czlowiek
的 base class 但我确信这对我的问题没有影响,它有像 Czlowiek 这样的构造函数,但使用 Organizmy 构造函数)
Czlowiek.h
#pragma once
#include "Zwierze.h"
class Czlowiek : public Zwierze
{
public:
void Rysowanie() override;
void Powiedz();
void Akcja() override;
Czlowiek(Swiat& swiat);
};
在 Czlowiek.cpp
中,我尝试做这样的事情:
cout<<this->swiat.x<<endl; //this mean `Czlowiek` object
我收到错误:不允许使用不完整的类型
编辑:我在 czlowiek.cpp
中添加了 swiat.h
,现在它可以工作了。我现在制作 img 来显示我的问题。是循环依赖吗?
如果你想访问成员 swiat
喜欢这里
cout<<this->swiat.x<<endl;
对象必须是已知的,但我在这里只看到一个前向声明:
class Swiat;
您还需要包含 Swiat
的定义。你必须做类似
的事情
#include "Swiat.h"
或定义 Swiat
的任何地方。
前向声明有助于避免 .h
文件中的循环依赖,但在您的 Czlowiek.cpp
文件中您必须包含该文件。
我有摘要 class Organizm
,我在其中存储对 class Swiat
的引用。我不知道如何访问我的 Organizm
引用的对象变量。最好的解释是我的代码:
Organizmy.h
#pragma once
class Swiat;
class Organizm
{
public:
Swiat& swiat;
char symbol = '?';
int sila = 0;
int inicjatywa = 0;
int x=0 , y=0;
virtual void Akcja()=0;
virtual void Kolizja()=0;
virtual void Rysowanie()=0;
Organizm(Swiat& swiat, char symbol, int sila, int inicjatywa, int x, int y);
};
Organizmy.cpp
#include "Organizm.h"
#include <iostream>
using namespace std;
void Organizm::Rysowanie()
{
cout << "Hej jestem organizmem" << endl;
}
Organizm::Organizm(Swiat& swiat, char symbol, int sila, int inicjatywa, int x, int y)
:swiat(swiat)
{
this->symbol = symbol;
this->sila = sila;
this->inicjatywa = inicjatywa;
this->x = x;
this->y = y;
}
Zwierze
(Organizmy
的 sub class 和 Czlowiek
的 base class 但我确信这对我的问题没有影响,它有像 Czlowiek 这样的构造函数,但使用 Organizmy 构造函数)
Czlowiek.h
#pragma once
#include "Zwierze.h"
class Czlowiek : public Zwierze
{
public:
void Rysowanie() override;
void Powiedz();
void Akcja() override;
Czlowiek(Swiat& swiat);
};
在 Czlowiek.cpp
中,我尝试做这样的事情:
cout<<this->swiat.x<<endl; //this mean `Czlowiek` object
我收到错误:不允许使用不完整的类型
编辑:我在 czlowiek.cpp
中添加了 swiat.h
,现在它可以工作了。我现在制作 img 来显示我的问题。是循环依赖吗?
如果你想访问成员 swiat
喜欢这里
cout<<this->swiat.x<<endl;
对象必须是已知的,但我在这里只看到一个前向声明:
class Swiat;
您还需要包含 Swiat
的定义。你必须做类似
#include "Swiat.h"
或定义 Swiat
的任何地方。
前向声明有助于避免 .h
文件中的循环依赖,但在您的 Czlowiek.cpp
文件中您必须包含该文件。