我将方法的实现和定义分开。现在我不明白如何在Main.cpp文件中创建Parcel2类的对象/实例。我也写了Main.cpp Parcel2 :: Parcel2(2); ,但是日志说构造函数不能直接调用。请指导我。
Parcel2.h
#ifndef PARCEL2_H
#define PARCEL2_H
class Parcel2
{
private:
// Declare data members
int id;
public:
// Constructor
Parcel2(int id);
// Setter function
void setID(int id);
// getter function
int getID();
protected:
};
#endif
Parcel2.cpp
#include "Parcel2.h"
// Defination of constructor
Parcel2::Parcel2(int id) {
this->id = id;
}
// Defination of setter
void Parcel2::setID(int id) {
this->id = id;
}
// Defination of getter
int Parcel2::getID() {
return id;
}
Main7.cpp
#include <iostream>
#include "Parcel2.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
// how to make object
}
答案 0 :(得分:2)
如果您尝试在堆栈上创建Parsel2
对象(作为局部变量),则可以使用整数参数声明变量。 (需要整数参数,因为构造函数需要参数。)例如:
Parcel2 obj(2);
这是另一种C ++ 11语法,其中一些(我)发现更容易解析:
auto obj = Parcel2(2);
如果您想要动态分配Parsel2
,则需要使用new
进行分配:
Parcel2 * obj = new Parcel2(2);
再一次,另一种语法:
auto obj = new Parcel2(2);
最后请注意,请考虑使用成员初始化列表分配班级成员:
Parcel2::Parcel2(int id) : id(id)
{}