无效使用不完整的类型"class..."
Invalid use of incomplete type "class..."
我一直收到此错误,我不明白我做错了什么:"错误:在方法getAuftraeg((中无效使用不完整的类型'class Auftrag'",我想打印">vpa"列表。请帮帮我!!
#include <iostream>
#include <vector>
using namespace std;
class Auftrag;
class Kunde {
public:
Kunde(Kunde *kunde) {
*this = kunde;
}
Kunde(string s) : name{s}, vpa{} {}
void print(){
cout<<this->name<<endl;
getAuftraege();
}
string getName() const { return name; }
void addAuftrag(Auftrag *auftrag){
this->vpa.push_back(auftrag);
}
void getAuftraege() {
for (int i{0};i<vpa.size();i++)
cout << this->vpa.at(i)->getID();
}
private:
string name;
vector<Auftrag*> vpa;
};
class Auftrag {
public:
Auftrag(string s) : id{s}, pk{nullptr} {}
void print() {
cout<<this->id<<endl;
}
string getID() const { return id; }
void setKunde(Kunde *kunde){
this->pk = kunde;
}
Kunde *getKunde() const;
private:
string id;
Kunde *pk;
};
int main() {
// Anlegen: zwei Kunden und drei Auftraege
Kunde *k1{new Kunde{"Sepplhuber-Finsterwalder"}};
Kunde k2{"Kurz"};
Auftrag *a1{new Auftrag{"Decke streichen"}};
Auftrag *a2{new Auftrag{"Wand tapezieren"}};
Auftrag a3{"Jalousie montieren"};
Auftrag a4{"Laminat verlegen"};
// Erste Assoziationsrichtung:
// aus einem Objekt vom Typ Kunde
// zu Objekten vom Typ Auftrag
k1->addAuftrag(a1);
k1->addAuftrag(a2);
k1->addAuftrag(&a3);
// Zweite Assoziationsrichtung:
// aus einem Objekt vom Typ Auftrag
// zu einem Objekt vom Typ Kunde
a4.setKunde(&k2);
// Alles ausgeben:
k1->print();
k2.print();
a1->print();
a2->print();
a3.print();
a4.print();
// Speicher zurueckgeben:
delete k1;
k1 = nullptr;
delete a1;
a1 = nullptr;
delete a2;
a2 = nullptr;
}
将函数定义放在类的定义之后Auftrag
。
例如
inline void Kunde ::addAuftrag(Auftrag *auftrag){
this->vpa.push_back(auftrag);
}
inline void Kunde ::getAuftraege() {
for (int i{0};i<vpa.size();i++)
cout << this->vpa.at(i)->getID();
}
编译器必须知道类的定义,Auftrag
确定它是否具有vpa
这样的数据成员。
相关文章:
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- C2011 'CMemDC':Visual Studio 2019中的'class'类型重新定义
- C++错误:"class name"之前的预期类型说明符
- "class":非法使用此类型作为表达式 如何解决?
- 如何配置 Doxygen 以在"Class Index"中包含类的类型定义?
- 无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型
- 获取生成错误:错误 C2011:'ProfileSettings':'class'类型重定义
- 'class MyClass' 在尝试定义静态结构实例时不会命名类型
- 'inherit class'中类型 'template class' 引用的初始化无效
- C++模板: <class> 不命名类型
- 无效使用不完整的类型"class..."
- 无效使用不完整的类型"class"
- 错误:返回类型 'class Polar' 不完整,无效使用类型 'polar'
- 无效使用不完整的类型'class QGraphicsRectItem'
- 无效使用不完整的类型'class...'
- 错误:请求“y”中的成员“x”,该成员属于非类类型“class**”
- 我收到错误"无效使用不完整的类型'class map'
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条
- 如何确定作为void *返回的指针的类型(Class)
- 错误:无效使用了不完整的类型“class Theron::EndPoint”