使用struct和classes时,在C ++中使用'void'无效

时间:2010-04-01 22:02:20

标签: c++ compiler-errors

我有1个编译器错误。它来自我的代码中的这一行:

cout << myClass->Get_Type().description; 

Get_Type()的位置是:

void Tile::Get_Type() {  
    return &myStruct;  
}

我不太确定我做错了什么。或者那件事可能会出错。

5 个答案:

答案 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类型。