繁体   English   中英

C ++如何实现这一参数构造函数?

[英]C++ How do I implement this one parameter constructor?

在这个项目中,我必须创建一个名为Chain的类。 链将是值​​的列表(如数组)。 关键是我必须在不使用STL库的情况下创建此链。

现在,我必须实现这一参数构造函数:

Chain(const Object& item)
{
    // Write something.
}

顺便说一句,“对象”只是该类模板的名称。

我将这两个私有变量作为类的一部分:

size_t size_;
Object *array_;

假设我想通过main发出此调用:

Chain<int> d{7}; 

就是说将7传递给一个参数构造函数。

我将如何实现这一参数构造函数?

另外,例如,如果从主我输入,我需要能够打印出此类:

Chain<int> d{7};  // A chain containing 7 should be created.
cout << d;  // Should just print [7]

为了做到这一点,我必须实现这个重载的<<运算符:

// Overloading the << operator.
 friend std::ostream &operator<<(std::ostream &out, const Chain &a_chain)
 {
   // Print the chain.
   return out;
 }

到目前为止尝试的代码:

// One parameter constructor.

Chain(const Object& item)
{

array_ = new Object[item];
// array_=item;
size_++;
}

// Overloading the << operator.
friend std::ostream &operator<<(std::ostream &out, const Chain &a_chain)
{

   cout << array_ << endl;

   return out;
}

对于这些类型的事情,最好一次完成一件事情,确保在增加额外的复杂性之前确保每个小部分都能正常工作。 有关更多详细信息,请参见如何调试小型程序

对于您已经显示的代码(现在),这里的代码完全可以完成您所描述的内容, 仅此而已

template<typename T>
struct Chain
{
    T value;
};

// Overloading the << operator.
template<typename T>
std::ostream &operator<<(std::ostream &out, const Chain<T> &a_chain)
{
    out << a_chain.value << std::endl;
    return out;
}

int main()
{
    Chain<int> d{ 7 };  // A chain containing 7 should be created.
    std::cout << d;  // Should just print [7]

    return 0;
}

请注意,不必使用Object* array_来使此代码片段正常工作。 满意之后,您可以添加更多作品。 例如,如果您确实要实现自己的std::vector<> -like类(不好的主意),那么下一步可能是删除模板,因为这样做会增加额外的复杂性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM