是否可以在一個語句中設置多個不同的類成員?中如何做到這一點做到了一個例子:C++設置多個類成員
class Animal
{
public:
int x;
int y;
int z;
};
void main()
{
Animal anml;
anml = { x = 5, y = 10, z = 15 };
}
是否可以在一個語句中設置多個不同的類成員?中如何做到這一點做到了一個例子:C++設置多個類成員
class Animal
{
public:
int x;
int y;
int z;
};
void main()
{
Animal anml;
anml = { x = 5, y = 10, z = 15 };
}
「轉換」巴里的評論到一個答案,是的,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;
}
(按照加入與this meta post這個社會維基答案)
您可以隨時超載的構造方法或創建方法在一個聲明中說:「設置多個不同的對象屬性「:
class Animal {
public:
Animal() {
};
Animal(int a, int b, int c) {
x = a;
y = b;
z = c;
}
void setMembers(int a, int b, int c) {
x = a;
y = b;
z = c;
}
private:
int x;
int y;
int z;
};
int main() {
// set x, y, z in one statement
Animal a(1, 2, 3);
// set x, y, z in one statement
a.setMembers(4, 5, 6);
return 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;
}
溶液2爲任何類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;
}
'無效的主要()'在C++非法。在獲得票證之前,你會想把它改成'int main()'。 –
您需要查看[彙總](http://stackoverflow.com/q/4178175/2069064)是什麼。 – Barry