使用类和标题的两个错误

时间:2014-11-20 06:14:57

标签: c++

我得到错误类重新定义

此外,错误ID不是类进程的成员

并且在ID

之前缺少半冒号

我尝试了char *而不是字符串..也没有工作

有任何帮助吗?我好像错过了什么

提前致谢

process.h文件

#ifndef PROCESS_H
#define PROCESS_H


 class process
{
public:

 string ID;
 int run_time;
 int arrival_time;

 process();

 int get_start_time();
 int get_finish_time(int start, int run);
 int get_TA_time(int finish, int start);
 float get_weighted_TA_time();

};

#endif

process.cpp文件

#include <cstdlib>
#include <stdio.h>
#include <string>
#include <sstream>

#include "process.h"

using namespace std;

class process
{ 
public:

 process:: process() {};
 int process:: get_start_time()
 {
     int x;
     return x;
 }
 int process:: get_finish_time(int start, int run)
 {
     int x;
     return x= start +run;
 }
 int process:: get_TA_time(int finish, int start)
 {
     int x;
     return x= finish - start;
 }
 float process::  get_weighted_TA_time()
 {};
 };

2 个答案:

答案 0 :(得分:2)

问题1 类别清晰度
cpp文件中,您无需编写class process。它应该是

#include <cstdlib>
#include <stdio.h>
#include <string>
#include <sstream>

#include "process.h"

using namespace std;

process:: process() {};
int process:: get_start_time()
{
    int x;
    return x;
}
int process:: get_finish_time(int start, int run)
{
    int x;
    return x= start +run;
}
int process:: get_TA_time(int finish, int start)
{
    int x;
    return x= finish - start;
}
float process::  get_weighted_TA_time()
{};

在头文件中,您已经提供了必需的声明。在cpp中,您需要提供定义。但是因为您现在不在班级范围内,所以您必须提供您已经在做的成员的完全限定名称。 (例如:int process:: get_finish_time(int start,int run))

如果再次使用class process,编译器没有提示您打算使用同一个类而不希望新类导致类重定义错误。在C ++中,不允许部分创建类,并在其他地方完成其余部分。 (不要与继承相结合)

问题2 :字符串问题
在您的标头文件中添加#include <string>并使用std::string或添加行using std::string

答案 1 :(得分:0)

有一些问题。一个是这个:

process.h需要#include <string>。包含后,将所有字符串变量添加到std::

    #ifndef PROCESS_H
    #define PROCESS_H

    #include <string>
    class process
    {
        public:
           std::string ID;
           int run_time;
           int arrival_time;

           process();
           int get_start_time();
           int get_finish_time(int start, int run);
           int get_TA_time(int finish, int start);
           float get_weighted_TA_time();
   };
   #endif

您原始代码的问题在于:

  1. 依赖<string>之前包含process.h的某些外部模块。
  2. 在包含using namespace std;
  3. 之前,依赖某些外部模块声明process.h

    这些都不能保证。