不能做 - 自動改變一個值,你需要運行一些代碼,(用C或C++)代碼總是在一個函數。
這個答案的其餘部分假定使用C++,並且根本不會在C中工作。
你可以,但是,保持一個事實,即它是被外部可見,一個函數,它(我猜)是你關心什麼:
struct Person {
int scoreone;
int scoretwo;
class total {
int *a, *b;
public:
total(int *a, int *b) : a(a), b(b) {}
operator int() { return *a + *b; }
} scoretotal;
Person() : scoretotal(&scoreone, &scoretwo) {}
};
這確實有一個(通常是輕微的)側影響。它取決於從Person::total
到int
的隱式轉換以完成其工作。這可能會在幾種情況下導致意想不到的結果。一種情況是,如果您試圖在您希望從int
到其他類型的隱式轉換的情況下使用some_person.scoretotal
。您已經在使用從Person::total
到int
的隱式轉換,編譯器將只隱式使用一個用戶定義的轉換,否則將失敗。另一方面,如果您要使用auto x = some_person.scoretotal;
,x
將是Person::total
而不是int
,因爲auto
會推導出實際類型,而不會發生隱式轉換。
只要你做的比較明顯的事情,如:
Person some_person;
some_person.scoreone = 1;
some_person.scoretwo = 2;
int total = some_person.scoretotal;
std::cout << "Total score: " << some_person.scoretotal;
...你會得到scoretotal
跟蹤總數的scoreone
和scoretwo
沒有使它明顯,一個函數被調用做。
請更多代碼? & 你有什麼問題 ? – Blacktempel
請選擇一種語言。這是C還是C++?我建議C++。 – Oswald
除了不清楚你正在編碼哪種語言,你的'main'是不對的。爲'main'使用正確的聲明。 –