我想在我的main.cpp
中声明一个函数,以便我的main
函数可以成为文件中的第一个函数。看起来像这样:
main.cpp
#include <iostream>
#include <string>
using namespace std;
string my_function();
int main () {
my_function();
return 0;
}
string my_function(string message = "") {
string response;
cout << message;
getline(cin,response);
return response;
}
但是,在编译时出现错误:
/usr/bin/ld: /tmp/cco8jyj1.o: in function `main':
main.cpp:(.text+0x1f): undefined reference to `my_function[abi:cxx11]()'
collect2: error: ld returned 1 exit status
[Finished in 1.4s with exit code 1]
怎么了?
答案 0 :(得分:5)
string my_function();
已声明但未定义。
应该是:
string my_function(string message = "");
...
string my_function(string message) { ... }
答案 1 :(得分:1)
更好:
在声明中使用默认参数,但在定义中不使用。
通过const引用传递字符串,因此不会引起不必要的麻烦 字符串的副本。
已更新:
string my_function(const string& message = "");
int main() {
my_function();
return 0;
}
string my_function(const string& message) {
string response;
cout << message;
getline(cin, response);
return response;
}
答案 2 :(得分:0)
您可以使用以下解决方案:
string my_function(string message = "");
...
string my_function(string message)
{
your codes here
}