是否可以在一个语句中设置多个不同的类成员?只是一个如何做到这一点的例子:
class Animal
{
public:
int x;
int y;
int z;
};
void main()
{
Animal anml;
anml = { x = 5, y = 10, z = 15 };
}
答案 0 :(得分:2)
要将Barry的评论“转换”为答案,是的,在the conditions here下:
聚合是一个没有用户声明的数组或类(第9节) 构造函数(12.1),没有私有或受保护的非静态数据成员 (第11条),没有基类(第10条),也没有虚函数 (10.3)。
示例:
class Animal
{
public:
int x;
int y;
int z;
};
int main() {
Animal anml;
anml = { 5, 10, 15 };
return 0;
}
(此社区Wiki答案是根据this meta post添加的。)
答案 1 :(得分:1)
您总是可以重载构造函数或创建在一个语句中设置多个不同对象属性的方法":
#Want to get the total of a single user mensal cost
def total
user_id.each do |mensal_cost|
mensal_cost.inject(&:+)
end
#Now the custom validation itself
validate :check_mtotal
def check_mtotal
if user_id && total > 1000
errors.add(:user_id, message: 'cant add more animals')
end
end
答案 2 :(得分:0)
动物的解决方案1(http://ideone.com/N3RXXx)
#include <iostream>
class Animal
{
public:
int x;
int y;
int z;
Animal & setx(int v) { x = v; return *this;}
Animal & sety(int v) { y = v; return *this;}
Animal & setz(int v) { z = v; return *this;}
};
int main() {
Animal anml;
anml.setx(5).sety(6).setz(7);
std::cout << anml.x << ", " << anml.y << ", " << anml.z << std::endl;
return 0;
}
任何有x
,y
(https://ideone.com/xIYqZY)
#include <iostream>
class Animal
{
public:
int x;
int y;
int z;
};
template<class T, class R> T& setx(T & obj, R x) { obj.x = x; return obj;}
template<class T, class R> T& sety(T & obj, R y) { obj.y = y; return obj;}
int main() {
Animal anml;
sety(setx(anml, 5), 6);
std::cout << anml.x << ", " << anml.y << std::endl;
return 0;
}