Przeciążanie funkcji jednoargumentowej/o nieznanej liczbie argumentów

0

Witam!

Mam funkcję:
void funkcja (int n)
oraz
void funkcja (int n,...)
W przypadku jednego argumentu chciałbym, żeby była wywoływana pierwsza wersja funkcji. Jak najprościej zmienić kod, żebym nie otrzymywał błędu o niejednoznacznym wywołaniu przeciążonej funkcji?

0

Powinieneś pytać jak tego nie zrobić.
Bo kopiesz dół w który na 100% wpadniesz.

0

Jeśli piszesz w C++ (zakładam tak na podstawie tagów) to dla funkcji zmiennoargumentowej powinieneś użyć variadic temaplate zamiast operatora ... . W C++ (nie wiem czy tak jest nadal w C++11) przesłanie obiektu do funkcji z operatorem ..., który nie jest typu POD = undefined behavior.
Najlepiej napisz co chcesz zaimplementować.

0

Piszę prosty program do szkoły, w którym tworzę klasę wektor - jedną z jej metod ma być funkcja remove usuwająca wybrane elementy. Chciałem stworzyć dwie przeciążone funkcje - jedną przyjmująca jeden argument (element o którym indeksie należy usunąć) oraz drugą przyjmującą nieznaną ilość argumentów (gdzie pierwszy argument to liczba tych argumentów). Właściwie mogę z tego przeciążenia zrezygnować (bo nie jest wymagane), ale jestem ciekaw jak można rozwiązać taki problem.

2

Zaimplementuj dokładnie to co oferuje erase z std:
http://en.cppreference.com/w/cpp/container/vector/erase

0

To dobry pomysł, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1