我有1个编译器错误。它来自我的代码中的这一行:
cout << myClass->Get_Type().description;
Get_Type()的位置是:
void Tile::Get_Type() {
return &myStruct;
}
我不太确定我做错了什么。或者那件事可能会出错。
答案 0 :(得分:7)
返回类型为void
的函数无法返回任何内容(这就是void
的含义:函数不返回任何内容)。您正在尝试返回某些内容(myStruct
的地址)。
您需要不返回任何内容(即将您的返回更改为return;
或完全删除它)或将函数的返回类型从void
更改为指向myStruct
类型的指针{1}}是。
答案 1 :(得分:2)
你的Get_Type()方法的返回类型为void,而它的返回类型应为myStruct。
如果您的结构声明如下:
struct S {
char* description;
}
你的Get_Type应该返回一个S类型的指针:
S* Tile::Get_Type(){
return &myStruct;
}
假设myStruct声明为:
S myStruct;
在班级宣言中。
答案 2 :(得分:1)
Get_Type返回void。所以它不能是一个名为discription的元素的结构。或描述。
你需要,而不是
TypeOfMyStruct * Tile::Get_Type() { ... }
然后你需要:
foo->GetType()->description
因为那是你想要返回的指针,而不是引用。
答案 3 :(得分:0)
您正在尝试从定义为没有返回类型的函数返回一个对象。
Get_Type应该返回什么?看起来您正在尝试将地址返回myStruct
。如果是这样的话,你需要你的函数定义如下:
TypeOfMyStruct* Tile::Get_Type() {
return &myStruct;
}
将“TypeOfMyStruct”替换为myStruct
的实际类型。
如果您不想要返回任何内容,请删除return &myStruct;
行,这样可以解决您的问题。但我怀疑情况并非如此。
答案 4 :(得分:0)
具有“ void”返回类型的函数将无法返回任何内容。 因此,您应该将返回类型更改为myStuct类型。