기본에서 C++을 배우려고합니다. 함수 포인터를 가지고 놀았습니다. 내가 잘못 뭐하는 거지인수가 너무 많고 함수 포인터의 인수가 너무 적습니다.
main.cpp:28 (*): error: too few arguments to function
main.cpp:32 (**): error: too many arguments to function
:
#include <iostream>
#include <string>
#include <vector>
bool print(std::string);
bool print(std::string a)
{
std::cout << a << std::endl;
return true;
}
bool call_user_function(bool(std::string), std::vector<std::string>);
bool call_user_function(bool(*p)(std::string), std::vector<std::string> args) {
if (args.size() == 0)
return (*p)(); (*)
else if (args.size() == 1)
return (*p)(args[0]);
else if (args.size() == 2)
return (*p)(args[0], args[1]); (**)
}
int main(int argc, char** argv)
{
std::vector<std::string> a;
a[0] = "test";
call_user_function(print, a);
// ok
return 0;
}
그것은 나를 제공 :이 코드를 고려?
벡터에 요소가 없기 때문에'a [0] = "test"'가 잘못되었습니다. 그것이 적어도 하나를 포함한다면 그것은 효과가있을 것이다. – GManNickG
관련이 없지만 정의 바로 앞에 오는 함수 선언은 아무 것도 수행하지 않습니다. –
@GManNickG, 오, 'push_back()'을 사용해야하나요? – Shoe