【发布时间】:2021-04-10 19:49:08
【问题描述】:
我是编程新手并坚持使用示例。
- 我创建了一个类 ptr_generator,它通过其构造函数创建一个指针数组。这里这些指针指向一个双精度向量。
- 然后创建一个 ptr_generator 类型的向量 myvec。
我在打印出指针所指向的双精度初始向量时遇到问题。
有人可以帮我解决这个问题吗?
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <vector>
#include <typeinfo>
#include <array>
using namespace std;
struct ptr_generator
{
ptr_generator ( std::vector<double> v1 , std::vector<double> v2)
{
std::array<std::vector<double>* , 2> ptr_arr {{&v1, &v2}};
}
};
//Myarr is a vector of ptr_generator class objects
using myvec = std::vector< ptr_generator> ;
myvec myfunction (std::vector<double> v1, std::vector<double> v2 )
{
myvec MyVector;
MyVector.push_back(ptr_generator(v1, v2));
std::cout << MyVector[0]<< std::endl;
return MyVector;
}
int main()
{
std::vector<double> vec1 { 1.0, 2.0, 2.1, 3.1};
std::vector<double> vec2 { 1.0, 4.0, 6.1, 2.1};
myfunction (vec1, vec2);
return 0;
}
错误:
main.cpp: In function ‘myvec myfunction(std::vector<double>, std::vector<double>)’:
main.cpp:33:15: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream}’ and ‘__gnu_cxx::__alloc_traits >::value_type {aka ptr_generator}’)
std::cout << MyVector[0]<< std::endl;
【问题讨论】:
-
我看过很多关于打印类对象的帖子,但在这里仍然无法解决问题。为回答基本问题而道歉,但我想在这里了解这些概念的见解。谢谢!
-
感谢保罗的评论。我已经尝试过这个并添加了
ostream& operator<<(ostream& os, const ptr_generator& ptr_obj) { os << ptr_obj.ptr_arr[0] << " " << ptr_obj.ptr_arr[1] << " " << ptr_obj.ptr_arr[2]; return os; },它正在向我返回地址。你能告诉我如何使用这个在输出控制台中打印我的原始向量 vec1 和 vec2?
标签: c++ class c++11 pointers vector