2014-09-27 77 views
0

我想输出在我的数组元素的对象的数量,但因为它是Java的语法是否不一样的:串联在COUT声明数组大小

// print list of all messages to the console 
void viewSent() 
{ 
    cout << "You have " << sent.size() << " new messages.\n";//Error: left of '.size' must have class/struct,union 
    std::cout << "Index  Subject" << '\n'; 

    for (size_t i = 0; i < sent.size(); ++i) 
    { 
     std::cout << i << " : " << sent[i].getSubject() << '\n'; 
    } 
} 

如果.size在C++语法中不起作用,有什么作用?

+4

“但它的语法与Java的语法不同。”这并不令人惊讶,因为C++不是Java。 – 2014-09-27 02:32:48

+0

更新此代码以显示'sent'的定义 – 2014-09-27 03:39:55

回答

4

的C++当量Java数组的是std::vectorsent.size()是获取大小的正确方法。

您没有发布您的sent的定义,但它应该是std::vector<YourObject> sent;,也许还指定了初始大小和/或值。

我猜你试过使用C风格的数组 - 不这样做,C风格的数组由于历史原因具有奇怪的语法和行为,真的不需要在C++中使用它们。

+0

我知道向量更好,但现在,我需要C风格的.size()阵列版本任何人都知道? – 2014-09-27 02:54:56

+0

@SamJava_The_Hut所以它不是一个矢量?你可以发布你的'sent'的定义吗? – Deqing 2014-09-27 03:32:46

+0

size()不存在C风格的数组版本。 [见这里](http://stackoverflow.com/questions/15861115/how-to-find-out-the-length-of-an-array)的一些想法。 – 2014-09-27 03:39:39

0

如果阵列是C数组,你可以通过它循环是这样的:

for (size_t i = 0; i < (sizeof(sent)/sizeof(TYPE)); ++i) 

...其中TYPE是基础类型的数组。

例如,如果发送被定义为:

int sent[]; 

...然后TYPE将int,像这样:

for (size_t i = 0; i < (sizeof(sent)/sizeof(int)); ++i) 

A C-阵列不是一个对象。所以它没有成员或方法,你不能使用它的成员操作符。 sizeof运算符用于查找基本类型的大小(以字节为单位)。 sizeof返回类型为size_t的整数值。