の引数1の変換はわかりません。これは私の関連する.hppファイルの部分です:'std :: vector <std :: basic_string <char>> *'から 'const std :: vector <std :: basic_string <char>>&'
ifndef CUSTOMER_HPP
#define CUSTOMER_HPP
#include <vector>
#include "Product.hpp"
class Customer
{
private:
std::vector<std::string> cart;
//other random member variables
ここで.cppファイルの私の関連する部分です:
#include "Customer.hpp"
#include "Product.hpp"
#include <iostream>
using namespace std;
Customer::Customer(string n, string a, bool pm){
cart = new vector<string>;
//other random member variables
}
完全なエラーがある:
Customer.cpp:10:7: note: candidate is:
In file included from /usr/include/c++/4.8/vector:69:0,
from Customer.hpp:4,
from Customer.cpp:1:
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >]
vector<_Tp, _Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from ‘std::vector<std::basic_string<char> >*’ to ‘const std::vector<std::basic_string<char> >&’
私は行を削除する場合 カート=新しいベクトル; 私が実行しようとしたとき、私はセグメンテーションフォールトを取得:
cart.push_back(random_string);
それが初期化されていないので、私は疑います。だから私は上記の行に追加し、今は上記のエラーがあります。
cart.push_back(random_stringが)に呼び出されます。
void Customer::addProductToCart(string st){
cout << "adding " << st << " to cart." << endl;
getCart().push_back(st);
}
cart.push_backに渡された引数は、()
void Store::addProductToMemberCart(string pID, string mID){
cout << "HIT in addProductToMemberCarti. pID = " << pID << ", mID = " << mID << endl;
getMemberFromID(mID)->addProductToCart(pID); }
からのものであり、そこに呼ばれていますgetMemberFromID()関数があります:
Customer* Store::getMemberFromID(string id){
for(int i = 0; i < members.size(); i++){
if(members.at(i)->getAccountID() == id){
return members.at(i);
}
}
return NULL;
}
なぜ新しいものを使用していますか? 'cart'はすでにベクトルです。その行は間違っています。クラッシュしている場合は、クラッシュしている実際のコードを表示する必要があります。 –
私はあなたがJavaのバックグラウンドから来ていると思いますが、まずC++の動作を理解するためにこれらの書籍を読むことができますhttp://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – Danh
cart.push_back(random_string)を実行しようとすると、セグメンテーション違反が発生します。これはベクトルが初期化されていないためだと思ったので、コンストラクタで初期化しようとしました。 –