【问题标题】:Dev c++ source file not compiled开发 c++ 源文件未编译
【发布时间】:2019-05-02 15:07:01
【问题描述】:

我通过 Dev C++ 使用 getter 和 setter 以及构造函数开发了 C++ 应用程序。我正在通过构造函数发送天、小时、分钟、秒变量并想打印它们。

但是当我运行和编译时出现错误,例如“源文件未编译”。

我该如何解决这个问题?我已经删除了 collect2.exe 文件,但问题仍然存在。

Sinif.CPP

#include "Sinif.h"
#include <iostream>
#include <iomanip>
using namespace std;

Sinif::Sinif(int d,int h, int m, int s) {
   day=d;
   hour = h;
   minute = m;
   second = s;

}
int Sinif::getDay() const {
   return day;
}
 void Sinif::setDay(int d) {
   day = d;
}
int Sinif::getHour() const {
   return hour;
}
 void Sinif::setHour(int h) {
   hour = h;
}
 int Sinif::getMinute() const {
   return minute;
}
 void Sinif::setMinute(int m) {
   minute = m;
}
int Sinif::getSecond() const {
   return second;
}
 void Sinif::setSecond(int s) {
   second = s;
}
 void Time::setTime(int d,int h, int m, int s) {
   day=d;
   hour = h;
   minute = m;
   second = s;
}
 void Time::print() const {
   cout << setfill('0');   
   cout << setw(2) << day 
   cout <<":"<< setw(2) << hour  
        << ":" << setw(2) << minute
        << ":" << setw(2) << second << endl;
}

Sinif.h

#ifndef TIME_H 
#define TIME_H   
class Sinif {
private:  
   int day;
   int hour;     
   int minute;   
   int second;  
public: 

   Sinif(int d=0,int h = 0, int m = 0, int s = 0); 
   int getDay() const;   // public getter for private data member hour
   void setDay(int d);
   int getHour() const;   // public getter for private data member hour
   void setHour(int h);   // public setter for private data member hour
   int getMinute() const; // public getter for private data member minute
   void setMinute(int m); // public setter for private data member minute
   int getSecond() const; // public getter for private data member second
   void setSecond(int s); // public setter for private data member second
   void setTime(int d,int h, int m, int s);   // set hour, minute and second
   void print() const; // Print a description of this instance in "hh:mm:ss"
};  // need to terminate the class declaration with a semicolon

#endif  // end of "#ifndef" block

主要 CPP

#include <iostream>
#include "Sinif.h" 
using namespace std;
int main() {
   Sinif t1(25,23, 59, 59);   // Test constructor
   // Test all public member functions
   t1.print(); 
   t1.setDay(17);
   t1.setHour(12);
   t1.setMinute(30);
   t1.setSecond(15);
   t1.print();       // 12:30:15
   cout << "Day is "    << t1.getDay()    << endl;
   cout << "Hour is "   << t1.getHour()   << endl;
   cout << "Minute is " << t1.getMinute() << endl;
   cout << "Second is " << t1.getSecond() << endl;

   Sinif t2;     // Test constructor with default values for hour, minute and second
   t2.print();  // 00:00:00
   t2.setTime(10,1, 2, 3);
   t2.print();  // 01:02:03

   Sinif t3(12); // Use default values for minute and second
   t3.print();  // 12:00:00

}

【问题讨论】:

  • 除非您的程序被称为“collect2.exe”,否则该程序是工具链中非常重要的一部分,您绝对不应该删除它。
  • 您遇到的具体错误是什么?
  • Mark 1 眼球说Time::setTime 应该是Sinif::setTime
  • cout &lt;&lt; setw(2) &lt;&lt; day 缺少一个 ;
  • 为什么要删除部分 GCC?

标签: c++ dev-c++


【解决方案1】:

你应该怎么做

阅读完整的构建输出,它会告诉你哪里出了问题。

在这种情况下,这可能是由于以下原因:

void Time::setTime(int d,int h, int m, int s) {
   day=d;
   hour = h;
   minute = m;
   second = s;
}

(你的班级叫Sinif,而不是Time。)

……还有这个:

cout << setw(2) << day 

(没有终止分号。)

解决了这些问题,your program compiles and runs(看起来像预期的输出)。


你不应该做的事情

删除部分 GCC,例如 collect2.exe。您现在可能需要重新安装工具链。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2019-06-27
    • 2010-10-23
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多