C++ 在c++;
我在将类划分为一个头文件和一个cpp文件时遇到问题。以下是我的主要cpp文件:C++ 在c++;,c++,class,header-files,C++,Class,Header Files,我在将类划分为一个头文件和一个cpp文件时遇到问题。以下是我的主要cpp文件: #include "myclasses.h" #include <math.h> #include <string.h> #include "stdafx.h" #include <fstream> #include <stdio
#include "myclasses.h"
#include <math.h>
#include <string.h>
#include "stdafx.h"
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
.....my other headers....
const int populationsize = 10;
Chrom temp;
chrom popcurrent[populationsize];
chrom poptemp;
chrom popnext[populationsize];
chrom popnextxover[populationsize];
#包括“myclasses.h”
#包括
#包括
#包括“stdafx.h”
#包括
#包括
#包括
#包括
…我的其他标题。。。。
常量int populationsize=10;
色度温度;
chrom popcurrent[填充大小];
色度波普温度;
chrom popnext[填充大小];
chrom popnextxover[populationsize];
然后是几个函数定义,然后
int main{body}
我有myclasses.h头文件,如下所示:
#ifndef myclasses_h
#define myclasses_h
#include <vector>
#include <iostream>
#include <fstream>
#include <stdafx.h>
using namespace std;
int Machines, Jobs,jobscp;
typedef class solutionset
{
public:
vector <int> indexinmilp;
vector <int> indexinga;
vector <int> startinmilp;
void resize();
};
solutionset problemsolution;
typedef class Chrom
{
public:
vector<vector <float>> StartTime;
vector<vector <int>> Processing;
vector<vector < int>> t1;
int M;
int W;
float fit;
void variablesresize();
} ;
class Problem{
public:
vector<vector <int>> Processing;
vector<vector < int>> t1;
int M;
int W;
void setvectorsize();
};
#endif
#include "myclasses.h"
#include <vector>
#include <stdafx.h>
#include <iostream>
#include <fstream>
using namespace std;
vector< int> indexinmilp;
vector< int> indexinga;
vector <int> startinmilp;
void solutionset::resize(){
for (int i = 0; i < Machines - 1; ++i)
{
indexinmilp.resize(jobscp);
indexinga.resize(jobscp);
startinmilp.resize(jobscp);
}
};
solutionset problemsolution;
void Chrom::variablesresize(){
int i = 0, j, k;
float a;
std::vector<float> datapoints;
std::ifstream myfile("Input.dat", std::ios_base::in);
i = 0;
myfile.open("Input.dat");
while (!myfile.eof())
{
myfile >> a;
if (!myfile)
{
myfile.clear();
myfile.ignore(1);
}
else
{
datapoints.push_back(a);
++i;
}
}
myfile.close();
Jobs = datapoints[0];
Machines = datapoints[1];
jobisconsidered.resize(Machines);
StartTime.resize(Machines)
for (int i = 0; i < Machines; ++i)
{
StartTime[i].resize(Jobs);
jobisconsidered[i].reserve(Jobs);
}
}
void Problem::setvectorsize()
{
Processing.resize(Machines);
t1.resize(Machines);
for (int i = 0; i < Machines; ++i)
{
Processing[i].resize(Jobs);
t1[i].resize(Jobs);
}
};
\ifndef myclass\u h
#定义我的类
#包括
#包括
#包括
#包括
使用名称空间std;
int机器、作业、作业SCP;
类型定义类解决方案集
{
公众:
向量指数;
向量索引;
载体startinmilp;
void resize();
};
解集问题解;
typedef类色度
{
公众:
向量起始时间;
矢量处理;
向量>t1;
int M;
int W;
浮动配合;
void variablesresize();
} ;
阶级问题{
公众:
矢量处理;
向量>t1;
int M;
int W;
void setvectorsize();
};
#恩迪夫
我对myclasses.cpp的定义如下:
#ifndef myclasses_h
#define myclasses_h
#include <vector>
#include <iostream>
#include <fstream>
#include <stdafx.h>
using namespace std;
int Machines, Jobs,jobscp;
typedef class solutionset
{
public:
vector <int> indexinmilp;
vector <int> indexinga;
vector <int> startinmilp;
void resize();
};
solutionset problemsolution;
typedef class Chrom
{
public:
vector<vector <float>> StartTime;
vector<vector <int>> Processing;
vector<vector < int>> t1;
int M;
int W;
float fit;
void variablesresize();
} ;
class Problem{
public:
vector<vector <int>> Processing;
vector<vector < int>> t1;
int M;
int W;
void setvectorsize();
};
#endif
#include "myclasses.h"
#include <vector>
#include <stdafx.h>
#include <iostream>
#include <fstream>
using namespace std;
vector< int> indexinmilp;
vector< int> indexinga;
vector <int> startinmilp;
void solutionset::resize(){
for (int i = 0; i < Machines - 1; ++i)
{
indexinmilp.resize(jobscp);
indexinga.resize(jobscp);
startinmilp.resize(jobscp);
}
};
solutionset problemsolution;
void Chrom::variablesresize(){
int i = 0, j, k;
float a;
std::vector<float> datapoints;
std::ifstream myfile("Input.dat", std::ios_base::in);
i = 0;
myfile.open("Input.dat");
while (!myfile.eof())
{
myfile >> a;
if (!myfile)
{
myfile.clear();
myfile.ignore(1);
}
else
{
datapoints.push_back(a);
++i;
}
}
myfile.close();
Jobs = datapoints[0];
Machines = datapoints[1];
jobisconsidered.resize(Machines);
StartTime.resize(Machines)
for (int i = 0; i < Machines; ++i)
{
StartTime[i].resize(Jobs);
jobisconsidered[i].reserve(Jobs);
}
}
void Problem::setvectorsize()
{
Processing.resize(Machines);
t1.resize(Machines);
for (int i = 0; i < Machines; ++i)
{
Processing[i].resize(Jobs);
t1[i].resize(Jobs);
}
};
#包括“myclasses.h”
#包括
#包括
#包括
#包括
使用名称空间std;
向量indexinmilp;
向量indexinga;
载体startinmilp;
void solutionset::resize(){
对于(int i=0;i>a;
如果(!myfile)
{
myfile.clear();
忽略(1);
}
其他的
{
数据点。推回(a);
++一,;
}
}
myfile.close();
作业=数据点[0];
机器=数据点[1];
考虑作业。调整大小(机器);
开始时间。调整大小(机器)
对于(int i=0;i
然而,当我在VisualStudio中运行它时,我看到了几个错误。我检查了与此问题相关的其他线程,例如,但仍然无法确定问题是什么。此外,我有一些全局变量,但似乎需要在myclasses.h头文件和myclasses.cpp中重新定义它们 我得到的错误: myclasses.cpp的第一个选项: 对于命令
vectorindexinmilp代码>错误包括
错误3错误C2143:语法错误:缺少“;”在
您不应该在标头中声明全局变量。您正在main.cpp和myclasses.cpp之间创建冲突。查找引用全局变量的“extern”关键字
您可以在myclasses.cpp中重新定义问题解决方案
您不应该使用“typedef类”。你可以用两次,但不能在第三节课上用
正如其他人所说,您需要提供错误详细信息
请编辑问题,提供您遇到的错误。“但是我在运行时看到了几个错误”-如果您不告诉我们这些错误是什么,您希望我们如何帮助您?请删除#包括,或者将其放在首位。Microsoft ism会对您的代码造成可怕的影响。@DeiDei添加了一些错误。@Jesper0Juhl有很多错误。我添加了一些。所以我需要在myclasses.cpp中使用external来声明它们?那么我刚才添加的其他错误呢?我也可以使用extern来处理类中的向量之类的变量吗?看看这里:否则,看起来你有很多语法错误。你需要一步一步来纠正这些错误。