gpt4 book ai didi

c++ - 在 vector 练习中为体系结构x86_64编译C++不明符号

转载 作者:行者123 更新时间:2023-12-02 10:56:41 24 4
gpt4 key购买 nike

(已更新新代码,但仍然存在相同问题)

因此,为我的C++类做一些功课,几乎完成了,但它只是不会编译并吐出以下错误消息:

Undefined symbols for architecture x86_64:
"reportNames(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, char)", referenced from:
_main in CHomeWork11-55ac9e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

该程序的代码如下:
#include <iostream>
#include <iomanip>
#include <math.h>
#include <cmath>
#include <fstream>
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
ifstream fin;

int getRank(vector<string> names, string choice);
void reportNames(vector<string> names, char letter);

int main ()

{
string name;
int counter = 0;
string choice;
bool on = true;
char letter;

vector <string> names;
vector <string>::iterator iter;
vector <string>::iterator iterF;

fin.open("GirlNames.txt"); // reads in data

getline(fin, name);

while (!fin.fail())
{
names.push_back(name);
getline(fin, name);
}
fin.close();

cout << "Top Ten Baby Girl Names:" << endl;

iter = names.begin();

while(counter !=10)
{
cout << *iter << endl;
iter++;
counter++;
}

while(on)
{
cout << "Enter a name (press q to quit)" << endl;
getline(cin, choice);
if(choice == "q")
on = false;

else
{
iterF = find(names.begin(), names.end(), choice);
if(iterF == names.end())
cout << choice << " Is not on this list" << endl;
else
{
cout << choice << " is rank " << getRank(names, choice) << endl;
}
}
}
sort(names.begin(), names.end());

cout << "enter a starting letter for your name:" << endl;
cin >> letter;
reportNames(names, letter);
}

int getRank(vector<string> names, string choice)
{
int rank = 1;
for(int i = 0; i < names.size(); i++)
{
if(names[i] == choice)
return rank;
else
rank++;
}
return 0; //dummy return statement for the compiler
}
void reportName(vector<string> names, char letter)
{
for(int i = 0; i < names.size(); i++)
{
if(names[i].find(letter) !=string::npos)
cout << names[i] << endl;
}

}

我很确定问题与reportName函数有关,因为代码在我创建之前就已编译并正在运行。

最佳答案

比较两行:

void reportNames(vector<string> v, char letter);
void reportName(vector<string> names, char letter) {
...

您用一个名称声明了一个函数,但用另一个名称定义了。

关于c++ - 在 vector 练习中为体系结构x86_64编译C++不明符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61553177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com