Kezdőoldal » Számítástechnika » Programozás » Miért warningol a fordító?...

Miért warningol a fordító? Amúgy jól működik de mi a veszélyes ebben?

Figyelt kérdés

// main.cpp


# include <iostream>

# include <string.h>


typedef unsigned short ushort ;


using std::cout ;

using std::endl ;

using std::string ;


class cProba

{

public:

cProba():

x({14,82,8,4}) {} /*Itt miért kapom ezt a warningot: list-initializer for non-class type must not be parenthesized [enabled by default] */


short x[4] ;

protected:

private:

};


int main(void)

{

cProba obj ;

for(ushort i = 0; i < sizeof(obj.x) / sizeof(*obj.x); ++i)

cout << *(obj.x + i) << endl ;

return int(0) ;

}


2012. okt. 25. 03:35
 1/6 A kérdező kommentje:
Írjátok meg hogy ez mit jelent pls.
2012. okt. 25. 21:30
 2/6 anonim ***** válasza:

Én nem vagyok C++-os, de C#-ban egy listát így inicializálsz:

List<int> x = new List<int>() { 14, 82, 8, 4 };

Vagy így:

List<int> y = new List<int> { 14, 82, 8, 4 };


Tehát gondolom e helyett: x({14,82,8,4})

ez kéne:x(){14,82,8,4}, vagy simán x{14,82,8,4} próbáld ki

2012. okt. 26. 10:12
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Nem jó sajnos.

De fogalmam sincs,hogy tömböt miért nem lehet inicializálni konstruktorban.

2012. okt. 26. 11:10
 4/6 anonim ***** válasza:

Akkor szerintem írd simán:

short x[] = {14,82,8,4};


vagy

short x[4] ;

x = {14,82,8,4};

2012. okt. 26. 11:30
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:
Amúgy a kérdésem alatti példában jó az ahogy van mert működik rendesen nincs vele gond csak ugye oda írtam,azt a warningot amit kapok és hát sajnos nem tudom,hogy mennyire veszélyes is az.Figyelmen kívül hagyhatom ha mindenáron ragaszkodok ahhoz,hogy az inicializáló listában inicializáljam a tömböt?
2012. okt. 26. 11:41
 6/6 A kérdező kommentje:

cProba(): x {10,20,30,40} /*extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default] */

{}


A zárójelet kivettem mert az x nem osztály.Ezért nem kell az oda.De most meg hiányolja a fordító az egyenlőségjelet.


Így meg nem írhatom:

cProba(): x = {10,20,30,40}

{}


Így le sem fordul inicializáló listába nem lehet egyenlőségjelet írni.

2012. okt. 26. 11:50

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!