カスタム クラスで vector のプライベート継承を定義しました。その上で反復子を取得したいと考えています。しかし、変換エラーが発生します。
これが私の解決策です.h
#include <vector>
#include <string>
#ifndef SOLUTIONS_H_
#define SOLUTIONS_H_
class Solutions : private std::vector<std::string>
{
public:
using std::vector<std::string>::begin;
using std::vector<std::string>::end;
using std::vector<std::string>::push_back;
void Show() const;
};
#endif
ここに私のsolutions.cppがあります
#include <iostream>
#include "solutions.h"
using std::cout;
using std::endl;
using std::vector;
using std::string;
void Solutions::Show() const
{
cout << "Solutions : " << endl;
if ( ! vector<string>::empty() )
{
for (vector<string>::iterator it = begin(); it != end(); ++it)
{
cout << *it << endl;
}
}
}
ここに私のtest_solutions.cppがあります
#include "solutions.h"
int main()
{
Solutions resultat;
resultat.Show();
resultat.push_back("10 + 7 = 17");
resultat.push_back("3 / 3 = 1");
resultat.push_back("17 - 1 = 16");
resultat.Show();
resultat.push_back("AA * BB = CC");
resultat.push_back("CC - DD = EE");
resultat.push_back("AA * EE = FF");
resultat.Show();
return 0;
}
端末で使用したコマンドは次のとおりです(コンパイラUbuntu / Linaro 4.7.3-1ubuntu1):
g++ solutions.h solutions.cpp test_solutions.cpp -o test_solutions
コンパイラによって与えられたエラーは次のとおりです。
solutions.cpp: In member function ‘void Solutions::Show() const’:
solutions.cpp:12:44: erreur: conversion from ‘std::vector<std::basic_string<char> >::const_iterator {aka __gnu_cxx::__normal_iterator<const std::basic_string<char>*, std::vector<std::basic_string<char> > >}’ to non-scalar type ‘std::vector<std::basic_string<char> >::iterator {aka __gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >}’ requested
どうすれば問題を解決できますか?
前もって感謝します。