Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Перегруженные функции и указатели


Автор: tofreesky 31.12.2011, 17:15
Код

void func(SomeObj *in) {
 ...
}

void func(const char*) {
 ...
}


Компилятор не знает когда какую вызывать, как решить проблему и почему так? 

Автор: mes 31.12.2011, 17:30
Цитата(tofreesky @  31.12.2011,  16:15 Найти цитируемый пост)
Компилятор не знает когда какую вызывать, как решить проблему и почему так

покажите как вызываете

Автор: boostcoder 31.12.2011, 17:44
это возможно только в том случае, если пытаться передать функции указатель на void.

Автор: mes 31.12.2011, 19:43


Цитата(boostcoder @  31.12.2011,  16:44 Найти цитируемый пост)
это возможно только в том случае, если пытаться передать функции указатель на void. 

только ?
Код

void f(struct A *) {}
void f (const char*) {}

int main ()
{
  
   int i;
   
   f (i);
   f (&i);

   struct B {} * pb;
   
   f (pb);  
   
}

Автор: boostcoder 31.12.2011, 20:09
Ваш код не компилируется.
http://liveworkspace.org/code/546c99ea0a2e9e549a75745547aa8fbe
Цитата

Compilation finished with errors:
source.cpp: In function 'int main()':
source.cpp:8:8: error: call of overloaded 'f(int&)' is ambiguous
source.cpp:8:8: note: candidates are:
source.cpp:1:6: note: void f(A*) <near match>
source.cpp:1:6: note:   no known conversion for argument 1 from 'int' to 'A*'
source.cpp:2:6: note: void f(const char*) <near match>
source.cpp:2:6: note:   no known conversion for argument 1 from 'int' to 'const char*'
source.cpp:9:9: error: no matching function for call to 'f(int*)'
source.cpp:9:9: note: candidates are:
source.cpp:1:6: note: void f(A*)
source.cpp:1:6: note:   no known conversion for argument 1 from 'int*' to 'A*'
source.cpp:2:6: note: void f(const char*)
source.cpp:2:6: note:   no known conversion for argument 1 from 'int*' to 'const char*'
source.cpp:12:9: error: no matching function for call to 'f(main()::B*&)'
source.cpp:12:9: note: candidates are:
source.cpp:1:6: note: void f(A*)
source.cpp:1:6: note:   no known conversion for argument 1 from 'main()::B*' to 'A*'
source.cpp:2:6: note: void f(const char*)
source.cpp:2:6: note:   no known conversion for argument 1 from 'main()::B*' to 'const char*'


или что Вы хотели этим сказать?

Добавлено через 13 минут и 29 секунд
или я чего-то не понял..

Автор: boostcoder 31.12.2011, 20:32
похоже это я все не так понял smile 

Автор: mes 31.12.2011, 21:25
Цитата(boostcoder @  31.12.2011,  19:32 Найти цитируемый пост)
я все не так понял 

не только воид* )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)