Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对<';变量/函数'&燃气轮机;_C++_Unix_Compiler Errors - Fatal编程技术网

C++ 对<';变量/函数'&燃气轮机;

C++ 对<';变量/函数'&燃气轮机;,c++,unix,compiler-errors,C++,Unix,Compiler Errors,我正在尝试用candidate.h文件、candidate.cpp文件和main.cpp文件编写一个基本程序 我在candidate.h文件中声明了一个函数voidreadCandidates() 然后我在candidate.cpp中将其定义为 void readCandidates () { cin >> nCandidates; string line; getline (cin, line); for (int i = 0; i < nCandidate

我正在尝试用candidate.h文件、candidate.cpp文件和main.cpp文件编写一个基本程序

我在candidate.h文件中声明了一个函数void
readCandidates()

然后我在candidate.cpp中将其定义为

void readCandidates ()
{
  cin >> nCandidates;
  string line;
  getline (cin, line);

  for (int i = 0; i < nCandidates; ++i)
    {
      getline (cin, candidateNames[i]);
      delegatesWon[i] = 0;
    }
}
在我的candidate.h文件中,以确保它不会被定义两次

当我运行makemain命令时,我得到了错误

/home/pmurray/cs250/Asst1/primaries.cpp:33: multiple definition of `candidate'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:8: first defined here
primaries.o: In function `assignDelegatesToCandidates()':
/home/pmurray/cs250/Asst1/primaries.cpp:37: multiple definition of `nCandidates'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:15: first defined here
primaries.o: In function `assignDelegatesToCandidates()':
/home/pmurray/cs250/Asst1/primaries.cpp:38: multiple definition of `delegatesWon'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:16: first defined here
candidates.o: In function `readCandidates()':
candidates.cpp:(.text+0x49): undefined reference to `candidateNames'
primaries.o: In function `findCandidate(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
primaries.cpp:(.text+0x120): undefined reference to `candidateNames'
primaries.o: In function `printCandidateReport(int)':
primaries.cpp:(.text+0x1d8): undefined reference to `candidateNames' 
我尝试将extern放在其中一个变量的声明之前,这导致了错误

/home/pmurray/cs250/Asst1/primaries.cpp:33: multiple definition of `candidate'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:8: first defined here
primaries.o: In function `assignDelegatesToCandidates()':
/home/pmurray/cs250/Asst1/primaries.cpp:37: multiple definition of `nCandidates'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:15: first defined here
primaries.o: In function `assignDelegatesToCandidates()':
/home/pmurray/cs250/Asst1/primaries.cpp:38: multiple definition of `delegatesWon'
candidates.o:/home/pmurray/cs250/Asst1/candidates.cpp:16: first defined here
candidates.o: In function `readCandidates()':
candidates.cpp:(.text+0x49): undefined reference to `candidateNames'
primaries.o: In function `findCandidate(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
primaries.cpp:(.text+0x120): undefined reference to `candidateNames'
primaries.o: In function `printCandidateReport(int)':
primaries.cpp:(.text+0x1d8): undefined reference to `candidateNames' 
candidates.cpp:(.text+0x49):对“candidateNames”的未定义引用
primaries.o:在函数“findCandidate(std::basic_string)”中:
primaries.cpp:(.text+0x120):对“candidateNames”的未定义引用
primaries.o:在函数“printCandidateReport(int)”中:
primaries.cpp:(.text+0x1d8):对“candidateNames”的未定义引用
有人知道我做错了什么吗

候选人.cpp

#include <iostream>

using namespace std;
#include "candidates.h"

void readCandidates ()
{
  cin >> nCandidates;
  string line;
  getline (cin, line);

  for (int i = 0; i < nCandidates; ++i)
    {
      getline (cin, candidateNames[i]);
      delegatesWon[i] = 0;
    }
}
#包括
使用名称空间std;
#包括“候选者.h”
空读候选项()
{
cin>>nCandidates;
弦线;
getline(cin,line);
对于(int i=0;i
候选人

#ifndef CANDIDATES_H
#define CANDIDATES_H

#include <iostream>
#include <string>

using namespace std;

// Max # of candidates permitted by this program
extern const int maxCandidates = 10;

// Names of the candidates participating in this state's primary
extern string candidate[maxCandidates];

// Names of all candidates participating in the national election
extern std::string candidateNames[maxCandidates];

// How many candidates in the national election?
extern int nCandidates;

// How many delgates have been won by each candidate
extern int delegatesWon[maxCandidates];

extern int findCandidate (std::string name);


/**
 * read the list of candidate names, initializing their delegate counts to 0.
 */
void readCandidates ();

#endif // CANDIDATES_H
#如果没有候选人#
#定义候选对象
#包括
#包括
使用名称空间std;
//该计划允许的最大候选人人数
外部常量int MAX候选者=10;
//参加本州初选的候选人姓名
外部字符串候选者[最大候选者];
//参加全国选举的所有候选人的姓名
extern std::string candidateNames[maxCandidates];
//全国选举有多少候选人?
外部内部条件;
//每个候选人赢得了多少德尔盖茨
外部内部委托人[最大候选人];
extern int findCandidate(std::string name);
/**
*阅读候选名称列表,将其委托计数初始化为0。
*/
使候选人无效();
#endif//H
primaries.cpp(这是我的主.cpp)

#包括
//#包括“candidates.cpp”
使用名称空间std;
#包括“候选者.h”
//为正在处理的状态分配了多少代理
int代表该状态;
//正在处理的州的初选中有多少候选人
int nCandidatesInPrimary;
//有多少州参加选举
内部状态;
//(所有州)有多少代表参加选举
整数=0;
//这个州在初选中投了多少票
总票数;
//在本州的初选中,每位候选人获得多少选票
int votesForCandidate[maxCandidates];
/**
*对于最近阅读的主要内容,请确定有多少学员
*每个候选人都赢了。
*/
int assignDelegatesToCandidates()
{
int remainingDelegates=DelegatesFortheState;
对于(int i=0;i剩余代表)
nDel=剩余代表;
代表[候选资格]+=nDel;
剩余代表-=nDel;
}
}
/**
*找到具有指定名称的候选人。返回数组索引
*对于已找到的候选项,如果找不到,则取消指定。
*/
int findCandidate(标准::字符串名称)
{
int result=nCandidates;
对于(int i=0;i=需要时)

如果在头文件中声明变量和函数,您仍然需要在某个地方定义它们,最好是在使用它们的
.cpp
文件中(
candidates.cpp

将您在函数中使用的所有变量的定义添加到
候选者.cpp
文件中,这些变量将解决您的问题

顺便说一句,我同意这不是一个好的编程形式,但这可能超出了这个问题的范围。您不需要全局变量,因为它们不需要在实现文件(
.cpp
)之外进行访问。

您可以发布所有代码(hpp和cpp文件)吗?