所以这是我第一次尝试将我的班级分开......但我遇到了一些麻烦。
这是.h文件
#ifndef COURSE_H
#define COURSE3_H
class course3
{
string coursename;
int courseid;
int passinggrade;
int numcredits;
public:
course3( string acoursename, int acourseid, int apassinggrade,int anumcredits );
string getcoursename();
int getcouseid();
int getpassinggrade();
int getnumcredits();
};
这是cpp ......
#include <stdafx.h>
#include <iostream>
#include <string>
#include <course3.h>
using namespace std;
course3::course3( string acoursename, int acourseid, int apassinggrade,int anumcredits ) //constructors
{
coursename=acoursename;
courseid=acourseid;
passinggrade=apassinggrade;
numcredits=anumcredits;
}
string course3::getcoursename()
{
return coursename;
}
int course3::getcourseid()
{
return courseid;
}
int course3::getpassinggrade()
{
return passinggrade;
}
int course3::getnumcredits()
{
return numcredits;
}
}
我做错了什么?
错误:
错误C2146:语法错误:缺少&#39;;&#39;在标识符之前&#39; coursename&#39;
错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int
等等,但接近这些
答案 0 :(得分:2)
使用#include "course3.h"
代替#include <course3.h>
。
使用双引号,预处理器将在本地目录中查找标头。使用括号,它将在系统标题中搜索标题。
然后你的包含警卫中有一个拼写错误。如果你不想写#pragma once
等,我建议你使用#ifndef...
,并冒险犯错(首先检查你使用的编译器是否支持它.VS,GCC自3.4起,Clang等等。)
答案 1 :(得分:2)
你.h文件中的标题保护声明错误,你错过了#endif
。
#include <string>
属于.h文件,因为您在std::string
文件中使用.h
。
如果要在string
文件中使用std::string
而不是.h
,则using
语句也必须位于.h
文件中。但是你应该学会避免using namespace std;
因为它将整个std
命名空间转储到全局命名空间中。虽然它确实有效,但它并不是最佳或理想的。如果您不想在使用std::
的任何地方指定std::string
,那么您至少可以通过using
来限制using std::string;
语句的范围。
.cpp文件的末尾有一个额外的}
,不属于那里。
试试这个:
#ifndef COURSE3_H
#define COURSE3_H
#include <string>
class course3
{
std::string coursename;
int courseid;
int passinggrade;
int numcredits;
public:
course3( std::string acoursename, int acourseid, int apassinggrade, int anumcredits );
std::string getcoursename();
int getcourseid();
int getpassinggrade();
int getnumcredits();
};
#endif
#include <stdafx.h>
#include <iostream>
#include "course3.h"
course3::course3( std::string acoursename, int acourseid, int apassinggrade, int anumcredits ) //constructors
{
coursename = acoursename;
courseid = acourseid;
passinggrade = apassinggrade;
numcredits = anumcredits;
}
std::string course3::getcoursename()
{
return coursename;
}
int course3::getcourseid()
{
return courseid;
}
int course3::getpassinggrade()
{
return passinggrade;
}
int course3::getnumcredits()
{
return numcredits;
}
或者:
#ifndef COURSE3_H
#define COURSE3_H
#include <string>
using std::string;
class course3
{
string coursename;
int courseid;
int passinggrade;
int numcredits;
public:
course3( string acoursename, int acourseid, int apassinggrade, int anumcredits );
string getcoursename();
int getcourseid();
int getpassinggrade();
int getnumcredits();
};
#endif
#include <stdafx.h>
#include <iostream>
#include "course3.h"
course3::course3( string acoursename, int acourseid, int apassinggrade, int anumcredits ) //constructors
{
coursename = acoursename;
courseid = acourseid;
passinggrade = apassinggrade;
numcredits = anumcredits;
}
string course3::getcoursename()
{
return coursename;
}
int course3::getcourseid()
{
return courseid;
}
int course3::getpassinggrade()
{
return passinggrade;
}
int course3::getnumcredits()
{
return numcredits;
}
答案 2 :(得分:0)
上面提供的答案是正确的,但函数getcourseid
声明和函数实现的名称中有一个拼写错误