變量修飾符在編譯時固定爲每個變量。你可能不得不解釋你想要做的事情的背景,但也許這會滿足你的需求?
struct s
{
int* const B_ID;
};
int main (void) {
int n = 5;
s d = {&n};
int* value = d.B_ID; // ok
// d.B_ID = &n; // error
return 0;
}
由於您使用C++,我會建議:
class s {
public:
int* const B_ID;
s (int* id) :
B_ID (id) {
}
};
void main (void) {
int n = 5;
s my_s_variable = s(&n);
int* value = my_s_variable.B_ID; // ok
//my_s_variable.B_ID = &n; // error
return 0;
}
Ramiz Toma
:以及我需要的方式使用s.B_ID =東西
在C/C做++型修飾符(如const)在運行時爲給定類型聲明,並且在運行時不能更改。這意味着如果一個變量被聲明爲const
它永遠不能被分配給使用賦值操作符。它只會在構建時被分配一個值。
然而,這不是一個問題,因爲你可以通過適當的設計來解決這個問題。
如果你說你需要使用賦值,我認爲這是因爲你在知道變量的值是什麼之前創建結構。如果是這種情況,那麼你只需要將結構聲明移到知道該值之後。
例如
s d; //variable declaration
//calculate B_ID
//...
int* n = 5;
//...
d.B_ID = &n;
這是行不通的,因爲如果你想b.D_ID是「未分配」,它會永遠是這樣。您將需要類似的重構代碼到:
//calculate B_ID
//...
int* n = 5;
//...
s d (&n);
//good
如果您想了解一下您嘗試實現的目標,那將會有所幫助。你有幾個答案可以回答你關於結構的const成員的原始問題,但實際上並沒有用,因爲我們不知道你想在switch語句中使用它。 http://catb.org/esr/faqs/smart-questions.html#goal – Peter 2010-08-17 23:38:20