如何在main函数中创建Parcel2类的对象

时间:2016-05-15 18:37:12

标签: c++

我将方法的实现和定义分开。现在我不明白如何在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
}

1 个答案:

答案 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)
{}