Class className{ ...
struct vec
{ string name;
className value;
};
以上是我的类和结构定义,我的类对象应该是struct
的值部分我尝试了很多东西:(对于前)
vecName.value = className hey;
但没什么..这应该不是很难,但我发现自己在挣扎......有人吗?感谢
答案 0 :(得分:1)
你的问题形式不是很好,但是这里有一些编译和工作的东西,你可以从中提取所需的信息
#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()
然而,这些都取决于你想要做的事情,所以你必须自己做。
答案 1 :(得分:0)
是否要将className
的实例设置为vecName.value
?
className instance;
vecName.value = instance;
或者,如果您只想将vecName.value
设置为className
的新实例:
vecName.value = className();