vector<string> hj{ "jack" };
vector<double> x{ 8 };
NamePairs pair1(hj,x);
這是代碼運行的唯一方法。有沒有辦法直接值傳遞給pair1對象實例將主要向量<string>傳遞給對象實例的錯誤
vector<string> hj{ "jack" };
vector<double> x{ 8 };
NamePairs pair1(hj,x);
這是代碼運行的唯一方法。有沒有辦法直接值傳遞給pair1對象實例將主要向量<string>傳遞給對象實例的錯誤
您傳遞錯誤的類型到你的構造: "Jack"
是const char[5]
型的,第二個參數28.2
類型爲double
你的構造函數,雖然是期待std::vector<string>
和std::vector<double>
。所以問題在於你的構造函數期望有一個「列表」字符串和雙打,你沒有給他什麼。
考慮你的類的名稱正確的解決辦法應該是:
class NamePairs
{
private:
double age;
std::string name;
public:
NamePairs(const std::string& name, double Age)
{
this->name = name;
this->age = age;
}
};
現在你可以實例化它像:
NamePairs pair("Alfred", 43.4);
也可以考慮使用std::pair
考慮到你想要一個人名單,每個人都有一個名稱和年齡有一些不同的解決方案:
你可以創建一個類Person
有兩個屬性:
class Person
{
private:
double Age;
std::string Name;
public:
Person(double age, const std::string& name)
{
Age = age;
Name = name;
}
};
而且使用這樣的:
std::vector<Person> persons;
persons.push_back(Person(23.4, "Alfons");
或者你也可以(更喜歡你試試)創建一個類PersonList這樣的:
class PersonList
{
private:
std::vector<double> Ages;
std::vector<std::string> names;
public:
void addPerson(double Age, const std::string& Name)
{
Ages.push_back(Age);
Names.push_back(Names);
}
};
而且使用這樣的:
PersonList list;
list.addPerson(23.5, "Andrea");
我非常喜歡第一種方法,因爲如果他們不在列表中(例如,由訪問者返回或傳遞給其他函數/對象,或者如果您需要對其進行操作)。它看起來方式更清潔
請花時間複製和粘貼您的代碼,並在這裏提出一個實際問題。 – rems4e
您的'NamePairs'構造函數等待'vector'參數,但是您提供'char'數組和'float'。我不明白你爲什麼期望構造函數簽名中的向量。 – sashadereh
那麼你的問題是什麼? –