Ваш вопрос не очень правильно сформулирован, но вот что-то, что компилируется и работает, и вы, вероятно, можете извлечь из него необходимую информацию
#include <string>
class ClassName {
// your code
};
struct vec
{
std::string name;
ClassName value;
};
int main() {
vec v;
ClassName yourclass;
v.name = "hey";
v.value = yourclass;
}
Однако, хотя это работает, есть несколько вещей, которыеэтот код можно считать «плохой практикой».
Прежде всего, вы, вероятно, должны сделать vec классом, а не структурой, и дать ему надлежащий конструктор, имя и значение.частный и т. д.
Итак, вот несколько лучший пример:
#include <string>
class ClassName {
// your code
};
class Vec
{
public:
Vec(const std::string &name, const ClassName &value)
: name_(name), value_(value) {}
const std::string& getName() { return name_; }
const ClassName& getValue() { return value_; }
void setName(const std::string &name) { name_ = name; }
void setValue(const ClassName &value) { value_ = value; }
private:
std::string name_;
ClassName value_;
};
int main() {
ClassName yourclass1;
Vec v("hey", yourclass1);
}
Это все еще не идеально, потому что:
Каждый раз, когда вы копируете VecВы (все еще) также копируете свой класс.Это может быть хорошо, в зависимости от вашего приложения, но также может замедлить ваше приложение, если ваш класс очень большой.В этом случае вы можете сохранить указатель или умный указатель (например, boost :: shared_ptr ) для вашего класса.
Я только что предоставил getX () иSetx ().Было бы лучше, если бы вы могли придумать функции, которые делают логические вещи, а не просто получают / устанавливают значение, как, например, в классе Dog могли бы выполняться run () и jump () и getHappiness ()
Однако эти вещи зависят от того, что вы пытаетесь сделать, поэтому вам придется делать это самостоятельно.