我想從公共類函式回傳一個 struct 的副本,并且我在這個類中將這個 struct 定義為私有成員。
是否可以回傳任何其他型別的自定義資料的這種結構?
考慮這個簡單的例子:
class Test {
private:
struct sTest {
int i = 1;
}_sTest;
public:
sTest GetStruct() {
return _sTest;
}
};
然后在我創建這個類的物件之后:
Test cTest;
我怎么打電話
cTest.GetStruct()
要得到
_sTest
?
uj5u.com熱心網友回復:
您可以使用auto來存盤物件。
以下是示例代碼。在這里看到它的行動:
#include <iostream>
using namespace std;
class Test {
private:
struct sTest {
int i = 1;
}_sTest;
public:
sTest GetStruct() {
return _sTest;
}
};
int main()
{
Test a;
auto obj = a.GetStruct();
cout<< obj.i <<"\nDone!!!\n";
return 0;
}
輸出:
1
Done!!!
注意:它也適用于其他編譯器。檢查這里的其他編譯器也。
uj5u.com熱心網友回復:
以防萬一你不想在你的類中宣告你的結構:
// not necessarily a member function
auto GetStruct()
{
struct sTest {
int i = 1;
};
return sTest();
}
using test_t = decltype(GetStruct()); // you can make an alias for an anonymous struct.
auto test = GetStruct();
uj5u.com熱心網友回復:
由于私有類不能從類 Test 外部訪問,請使用關鍵字auto。
auto test = cTest.GetStruct();
uj5u.com熱心網友回復:
是的,這是完全安全的。它就像任何其他型別的資料一樣。使用 auto 您只是告訴編譯器猜測哪種變數會是。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378902.html
