[問題] 在class的private中宣告矩陣 問題請教...

看板C_and_CPP (C/C++)作者 (大豬小豬肉一斤)時間16年前 (2009/09/17 16:05), 編輯推噓4(4019)
留言23則, 7人參與, 最新討論串1/1
話說,我在一個header file中宣告一個class,舉例如下: const int N = 10; class ABC{ private: int arr[N]; ........ } 這樣子很OK,就是宣告一個class ABC 內含有arr[10]的private成員 但是,為什麼我把const拿掉之後, compiler不給我過? 加上extern也一樣。 望高手指點! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.144.18

09/17 16:10, , 1F
會不會是因為 不支援 variable length array
09/17 16:10, 1F

09/17 16:10, , 2F
要用VECTOR
09/17 16:10, 2F

09/17 16:11, , 3F
我之前也是加了const 就過了....
09/17 16:11, 3F

09/17 16:11, , 4F
但是 有高手說 這部是正確的解法
09/17 16:11, 4F

09/17 16:12, , 5F
你可以查一下 我之前的文章
09/17 16:12, 5F

09/17 16:16, , 6F
就像是不能在main寫 int N=10; int a[N]; 一樣
09/17 16:16, 6F

09/17 16:30, , 7F
樓上,可是我在main這樣用很OK阿!
09/17 16:30, 7F

09/17 16:34, , 8F
用的是什麼編譯程式?
09/17 16:34, 8F

09/17 16:34, , 9F
VS 2008
09/17 16:34, 9F

09/17 16:39, , 10F
不好意思den大...我剛在main試一次真的不行
09/17 16:39, 10F

09/17 16:39, , 11F
不過我以前記得我在VC6好像可以,所以我直覺認為OK說...
09/17 16:39, 11F

09/17 16:41, , 12F
所以除了加上const外沒有別的方法了嗎?
09/17 16:41, 12F

09/17 16:42, , 13F
不可能 ok. array dimension 不可以放 variable
09/17 16:42, 13F

09/17 17:05, , 14F
C 的話就 malloc 吧
09/17 17:05, 14F

09/17 20:32, , 15F
class A
09/17 20:32, 15F

09/17 20:32, , 16F
{
09/17 20:32, 16F

09/17 20:32, , 17F
enum length { N = 10 };
09/17 20:32, 17F

09/17 20:32, , 18F
int arr[N];
09/17 20:32, 18F

09/17 20:33, , 19F
};
09/17 20:33, 19F

09/18 02:34, , 20F
C/C++的矩陣一定要明確的大小, 不然compiler怎麼幫你配置?
09/18 02:34, 20F

09/18 02:35, , 21F
所以不論是用#define還是const還是enum都是可以的
09/18 02:35, 21F

09/18 02:36, , 22F
因為這些都是編譯時期決定的
09/18 02:36, 22F

09/18 02:37, , 23F
如果要動態大小的矩陣,就得用pointer自己分配或是vector
09/18 02:37, 23F
文章代碼(AID): #1AiUt9qv (C_and_CPP)
文章代碼(AID): #1AiUt9qv (C_and_CPP)