我已经获得了创建类的赋值,但构造函数应该是私有的。现在我们必须使用链接列表存储列表,但是我在声明我创建的类的对象时遇到了问题。
class Faculty
{
private :
// Personal Information
string Name;
string DateOfBirth;
string Address;
int Phone;
// Academic Information
string Experience;
string Department;
string *coursesTeaching;
string *coursesCanTeach;
string areaOfInterest;
// Managerial information
float salary;
string DateOfJoining;
string Room;
string ParkingLot;
Faculty ();
Faculty (string, string, string, int, string, string, string, float, string,
string, string);
public :
//copy constructor
Faculty (const Faculty &F);
//static function for making objects
static Faculty* create_faculty (string, string, string, int, string,
string, string, float, string, string, string);
// setters
void setName(string);
void setDateOfBirth (string);
void setAddress(string);
void setPhone(int);
这是我的静态对象创建函数的CPP文件定义。
//static function for making objects
Faculty* Faculty :: create_faculty (string n, string d, string a, int p,
string e, string dp, string ar, float s,
string doj, string r, string pl)
{
Faculty* F1 = new Faculty(n, d, a, p, e, dp, ar, s, doj, r, pl);
return F1;
}
这是主要的。
#include "AcademicStaff.h"
#include "faculty.h"
#include <iostream>
#include <string>
using namespace std;
struct FacultySt
{
Faculty *f;
f = Faculty :: create_faculty (string n, string d, string a, int p, string e,
string dp, string ar, float s, string doj,
string r, string pl);
FacultySt* next;
};
如何创建Faculty类的对象?我这样做的方式,它不起作用。
答案 0 :(得分:1)
Faculty *f; //1
f =/*anything*/; //2
我认为我引用的第二行是合法的。它应该在构造函数中完成 或者,从C ++ 11开始,您可以编写
Faculty *f=/*something*/;
到底是什么意思? :
Faculty :: create_faculty (string n, string d, string a, int p, string e,
string dp, string ar, float s, string doj,
string r, string pl);
它不是有效的函数调用,你应该传递参数,而不是...变量&#39;声明(?),或者它是什么。
不要使用std::string
执行功能,而是执行const std::string&
- 复制std::string
可能会很昂贵。
您不需要功能Faculty::create_faculty
,您可以写
Faculty *f=new Faculty(/*here the arguments*/);
答案 1 :(得分:0)
我认为您正在尝试做的一个简单的工作示例:
#include <iostream>
class X {
public:
static X* factoryMethod(int v) {
return new X(v); }
int get() {
return n; }
private:
X(int v) : n(v) {};
int n; };
int main(int, char* []) {
X* x = X::factoryMethod(5);
std::cout << x->get() << std::endl;
delete x;
return 0; }