Неправильное использование void в C ++ при использовании struct и классов - PullRequest
2 голосов
/ 02 апреля 2010

У меня 1 ошибка компилятора. Именно из этой строки в моем коде:

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

Где, как Get_Type ():

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

Я не совсем уверен, что я делаю неправильно. Или что в этом отношении может пойти не так.

Ответы [ 4 ]

7 голосов
/ 02 апреля 2010

Функция с типом возврата void не может ничего вернуть (это то, что означает void: функция ничего не возвращает). Вы пытаетесь что-то вернуть (адрес myStruct).

Вам либо ничего не нужно возвращать (т. Е. Изменить возвращаемый результат на return;, либо полностью удалить его), либо изменить тип возвращаемого значения функции с void на указатель на тип myStruct.

2 голосов
/ 02 апреля 2010

Ваш метод Get_Type () имеет тип возврата void, в то время как он должен иметь тип возврата myStruct.

Если ваша структура объявлена ​​так:

struct S {
  char* description;
}

ваш Get_Type должен возвращать указатель типа S:

S* Tile::Get_Type(){
  return &myStruct;
}

при условии, что myStruct объявлен как:

S myStruct;

в объявлении класса.

1 голос
/ 02 апреля 2010

Get_Type возвращает void. Так что это не может быть структура с элементом с именем discription. Или описание.

Вам нужно вместо

TypeOfMyStruct * Tile::Get_Type() { ... }

И тогда вам нужно:

foo->GetType()->description

потому что это указатель, который вы хотите вернуть, а не ссылка.

0 голосов
/ 02 апреля 2010

Вы пытаетесь вернуть объект из функции, которая определена как не имеющая возвращаемого типа.

Что должен возвращать Get_Type? Похоже, вы пытаетесь вернуть адрес на myStruct. Если это предназначено, вам нужно, чтобы ваше определение функции выглядело так:

TypeOfMyStruct* Tile::Get_Type() {
return &myStruct;
}

Заменить "TypeOfMyStruct" фактическим типом myStruct.

Если вы не хотите ничего возвращать, просто удалите строку return &myStruct;, и это решит вашу проблему. Однако я подозреваю, что это не тот случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...