C++ 在c++;

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

我在将类划分为一个头文件和一个cpp文件时遇到问题。以下是我的主要cpp文件:

 #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来处理类中的向量之类的变量吗?看看这里:否则,看起来你有很多语法错误。你需要一步一步来纠正这些错误。