在这个项目中,我必须创建一个名为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;
}
最佳答案
对于这些类型的事情,最好一次完成一个步骤,确保在增加额外的复杂性之前确保每个小工作都能正常进行。有关更多详细信息,请参见How to debug small programs。
对于您已经显示的代码(现在),这里的代码完全可以完成您所描述的内容,仅此而已。
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<>
的类(不好的主意),那么下一步可能是删除模板,因为这会增加额外的复杂性。关于c++ - C++如何实现这一参数构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42145434/