gpt4 book ai didi

c++ - Xcode 链接器错误 : linker command failed with exit code 1 (use -v to see invocation)

转载 作者:行者123 更新时间:2023-11-28 04:26:01 24 4
gpt4 key购买 nike

使用 C++ 和 Xcode 我总是遇到链接器命令失败的问题。我不知道这是什么意思。我正在创建一个包含 3 个文件的基本程序。一个 main.cpp 和一个带有标题的类文件。主文件是空的。这是其他两个的样子:

学生.hpp :

#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <sstream>

std::string line;
class Student{
public:
std::string fullName;
int projectGrade;
int quizGrade;
int midtermGrade;
int finalGrade;
int finish;
int start = 14;

std::string getStudentName();
int getProjectGrade();
int getQuizGrade();
int getMidtermGrade();
int getFinalGrade();
double getOverallGrade();
bool login(std::string username, std::string password);
bool login(std::string username);
};

学生.cpp:

#include "student.hpp"

std::string Student::getStudentName(){
finish = line.find("\t", start);
fullName = line.substr(start, finish);
return fullName;
}
int Student::getProjectGrade(){
start = line.find("\t", start) + finish;
finish = start + 2;
std::stringstream stream(line.substr(start, 2));
stream >> projectGrade;
return projectGrade;
}
int Student::getQuizGrade(){
start+=3;
std::stringstream stream(line.substr(start, 2));
stream >> quizGrade;
return quizGrade;
}
int Student::getMidtermGrade(){
start+=3;
std::stringstream stream(line.substr(start, 2));
stream >> midtermGrade;
return midtermGrade;
}
int Student::getFinalGrade(){
start+=3;
std::stringstream stream(line.substr(start, 2));
stream >> finalGrade;
return finalGrade;
}
double Student::getOverallGrade(){
return round((projectGrade + quizGrade + midtermGrade + finalGrade)/40)*10;
}
bool Student::login(std::string username, std::string password){
std::ifstream studentFile;
studentFile.open("/Users/griffin/desktop/Data Structures/Data Structures1/Data Structures1/Students.txt");
if(studentFile.is_open()){
while(getline (studentFile,line))
{
if ((username.length() == 7 && username.substr(0,4).compare("u000") == 0 && line.find(username) != std::string::npos) && (password.length() == 6 && password.substr(0,2).compare("pw") == 0 && line.find(password) != std::string::npos))
return true;
}
}
return false;
}
bool Student::login(std::string username){

std::ifstream studentFile;
studentFile.open("/Users/griffin/desktop/Data Structures/Data Structures1/Data Structures1/Students.txt");
if(studentFile.is_open()){
while(getline (studentFile,line))
{
if (username.length() == 7 && username.substr(0,4).compare("u000") == 0 && line.find(username) != std::string::npos)
return true;
}
}
return false;
}

主文件包括student.hpp。这是 Xcode 端的问题还是我的代码有错误?

main.cpp

#include "student.hpp"    
int main(int argc, const char * argv[]) {
return 0;
}

最佳答案

您的问题是您多次声明了全局变量 line

没有充分的理由在您的代码中使用全局变量,因此简单的解决方案是在两个登录方法中声明 line

然而,为了将来引用,这里是您应该如何声明全局变量

How do I use extern to share variables between source files?

关于c++ - Xcode 链接器错误 : linker command failed with exit code 1 (use -v to see invocation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54317317/

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