2015-07-10 3 views
0

У меня возникли проблемы с передачей указателя на объект класса в функцию.Могу ли я передать указатель на объект класса в функцию? Каков правильный синтаксис?

myFunction(fruit apple) 
{ 
... 
} 

int main() 
    { 
     fruit *apple = new fruit; 

     myFunction(&apple); 
    } 

После того, что компилятор говорит мне, что он не может преобразовать аргумент из фруктов в строку. Я не понимаю, что строка имеет отношение к любому из этого. Можно ли передать указатель объекта в качестве аргумента функции?

ответ

1

Возможно, это связано с вашим определением класса фруктов. Ниже приведена правильная реализация того, чего вы пытаетесь достичь здесь.

myFunction (fruit *apple) 
{ 
... 
} 

int main() 
{ 
    fruit *apple = new fruit; 
    myFunction(apple); 
} 

В вашем коде яблоко уже является указателем на объект типа fruit. Поэтому вам не нужно снова принимать адрес, используя оператор ampersand &. Если ваше требование было передать указатель на указатель на объект (который я сомневаюсь, что вам нужно), то ваша основная функция() была нормальна, но туРипсЫоп будет определяться следующим образом:

myFunction (fruit **apple) 
{ 
... 
} 
+0

Это было полезно, но MVS все еще считает, что аргумент должен быть строкой. «Невозможно преобразовать аргумент 2 из« fruit »в« std :: string »в строке« myFunction (apple); ». –

+0

Вам нужно больше узнать о своем коде, можете ли вы опубликовать полную информацию, включая номер строки, где компилятор поднимает ошибку? – Jaywalker

+0

Позже я понял, что не так. Я забыл обновить свой заголовочный файл, связанный с другим файлом cpp с моими функциями в нем. –