Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прога не компилится. В чём ошибки? ругается на "std::"... 
:(
    Опции темы
Proger10
Дата 26.11.2009, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Вот такой код (по идее который должен компилиться):
Код

#include <fstream>
#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

class WavFileForIO
{
/*
     WAV File Specification
     FROM http://ccrma.stanford.edu/courses/422/projects/WaveFormat/
    The canonical WAVE format starts with the RIFF header:
    0         4   ChunkID          Contains the letters "RIFF" in ASCII form
                                   (0x52494646 big-endian form).
    4         4   ChunkSize        36 + SubChunk2Size, or more precisely:
                                   4 + (8 + SubChunk1Size) + (8 + SubChunk2Size)
                                   This is the size of the rest of the chunk 
                                   following this number.  This is the size of the 
                                   entire file in bytes minus 8 bytes for the
                                   two fields not included in this count:
                                   ChunkID and ChunkSize.
    8         4   Format           Contains the letters "WAVE"
                                   (0x57415645 big-endian form).

    The "WAVE" format consists of two subchunks: "fmt " and "data":
    The "fmt " subchunk describes the sound data's format:
    12        4   Subchunk1ID      Contains the letters "fmt "
                                   (0x666d7420 big-endian form).
    16        4   Subchunk1Size    16 for PCM.  This is the size of the
                                   rest of the Subchunk which follows this number.
    20        2   AudioFormat      PCM = 1 (i.e. Linear quantization)
                                   Values other than 1 indicate some 
                                   form of compression.
    22        2   NumChannels      Mono = 1, Stereo = 2, etc.
    24        4   SampleRate       8000, 44100, etc.
    28        4   ByteRate         == SampleRate * NumChannels * BitsPerSample/8
    32        2   BlockAlign       == NumChannels * BitsPerSample/8
                                   The number of bytes for one sample including
                                   all channels. I wonder what happens when
                                   this number isn't an integer?
    34        2   BitsPerSample    8 bits = 8, 16 bits = 16, etc.

    The "data" subchunk contains the size of the data and the actual sound:
    36        4   Subchunk2ID      Contains the letters "data"
                                   (0x64617461 big-endian form).
    40        4   Subchunk2Size    == NumSamples * NumChannels * BitsPerSample/8
                                   This is the number of bytes in the data.
                                   You can also think of this as the size
                                   of the read of the subchunk following this 
                                   number.
    44        *   Data             The actual sound data.
*/


     private:
        char*    myPath;
        int    myChunkSize;
        int    mySubChunk1Size;
         short    myFormat;
        short    myChannels;
        int    mySampleRate;
        int    myByteRate;
        short    myBlockAlign;
        short    myBitsPerSample;
        int    myDataSize;
        
    public:
        // I made this public so that you can toss whatever you want in here
        // maybe a recorded buffer, maybe just whatever you want
        char*    myData;

        // get/set for the Path property
        char* getPath()
        {
            return myPath;
        }
        void setPath(char* newPath)
        {
            myPath = new char[200];
            //strcpy(myPath, newPath);
            myPath = newPath;
        }

        ~WavFileForIO()
        {
            delete myPath;
            myChunkSize = NULL;
            mySubChunk1Size = NULL;
             myFormat = NULL;
            myChannels = NULL;
            mySampleRate = NULL;
            myByteRate = NULL;
            myBlockAlign = NULL;
            myBitsPerSample = NULL;
            myDataSize = NULL;
        }

    // empty constructor
    WavFileForIO()
        {
        myPath = new char[200];
        }

    // constructor takes a wav path
    WavFileForIO(char* tmpPath)
        {
        myPath = new char[200];
        //strcpy(myPath, tmpPath);
        myPath = tmpPath;
        read();
        }

    // read a wav file into this class
    bool read()
    {
        ifstream inFile( myPath, ios::in | ios::binary);

        //printf("Reading wav file...\n"); // for debugging only

        inFile.seekg(4, ios::beg);
        inFile.read( (char*) &myChunkSize, 4 ); // read the ChunkSize

        inFile.seekg(16, ios::beg);
        inFile.read( (char*) &mySubChunk1Size, 4 ); // read the SubChunk1Size

        //inFile.seekg(20, ios::beg);
        inFile.read( (char*) &myFormat, sizeof(short) ); // read the file format.  This should be 1 for PCM

        //inFile.seekg(22, ios::beg);
        inFile.read( (char*) &myChannels, sizeof(short) ); // read the # of channels (1 or 2)

        //inFile.seekg(24, ios::beg);
        inFile.read( (char*) &mySampleRate, sizeof(int) ); // read the samplerate

        //inFile.seekg(28, ios::beg);
        inFile.read( (char*) &myByteRate, sizeof(int) ); // read the byterate

        //inFile.seekg(32, ios::beg);
        inFile.read( (char*) &myBlockAlign, sizeof(short) ); // read the blockalign

        //inFile.seekg(34, ios::beg);
        inFile.read( (char*) &myBitsPerSample, sizeof(short) ); // read the bitspersample

        inFile.seekg(40, ios::beg);
        inFile.read( (char*) &myDataSize, sizeof(int) ); // read the size of the data


        // read the data chunk
        myData = new char[myDataSize];
        inFile.seekg(44, ios::beg);
        inFile.read(myData, myDataSize);

        inFile.close(); // close the input file

        return true; // this should probably be something more descriptive
    }

    // write out the wav file
    bool save()
    {
        fstream myFile (myPath, ios::out | ios::binary);

        // write the wav file per the wav file format
        myFile.seekp (0, ios::beg); 
        myFile.write ("RIFF", 4);
        myFile.write ((char*) &myChunkSize, 4);
        myFile.write ("WAVE", 4);
        myFile.write ("fmt ", 4);
        myFile.write ((char*) &mySubChunk1Size, 4);
        myFile.write ((char*) &myFormat, 2);
        myFile.write ((char*) &myChannels, 2);
        myFile.write ((char*) &mySampleRate, 4);
        myFile.write ((char*) &myByteRate, 4);
        myFile.write ((char*) &myBlockAlign, 2);
        myFile.write ((char*) &myBitsPerSample, 2);
        myFile.write ("data", 4);
        myFile.write ((char*) &myDataSize, 4);
        myFile.write (myData, myDataSize);

        return true;
    }

    // return a printable summary of the wav file
    char *getSummary()
    {
        char *summary = new char[250];
        sprintf(summary, " Format: %d\n Channels: %d\n SampleRate: %d\n ByteRate: %d\n BlockAlign: %d\n BitsPerSample: %d\n DataSize: %d\n", myFormat, myChannels, mySampleRate, myByteRate, myBlockAlign, myBitsPerSample, myDataSize);
        return summary;
    }
};


int main( int argc, char *argv[] )
{
    // make sure that an argument was passed in
    if ( argc != 2 ) 
    {
        cout<<"usage: "<< argv[0] <<" <filename>\n";
        return 0;
    }

    // open the wav file
    char *path = new char[50];
    //strcpy(path, argv[1]);
    path = argv[1];
    WavFileForIO *myWav = new WavFileForIO(path);

    // print a summary of the wav file
    char *summary = myWav->getSummary();
    printf("Summary:\n%s", summary);    

    // write the summary back out
    //strcpy(path, "testout.wav");
    myWav->setPath("testout.wav");
    myWav->save();

    // collect the garbage
    delete summary;
    delete path;
    delete myWav;

    return 0;
}


Но не компилится. smile
Выдавая вот такие ошибки:
Код

01:18:06 waveIO $ gcc wavIO.cpp                                                                                     
wavIO.cpp: In function 'int main(int, char**)':                                                                     
wavIO.cpp:215: warning: deprecated conversion from string constant to 'char*'                                       
/tmp/cclKyqgc.o: In function `__static_initialization_and_destruction_0(int, int)':                                 
wavIO.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'                                        
wavIO.cpp:(.text+0x28): undefined reference to `std::ios_base::Init::~Init()'                                       
/tmp/cclKyqgc.o: In function `main':                                                                                
wavIO.cpp:(.text+0x77): undefined reference to `std::cout'                                                          
wavIO.cpp:(.text+0x7c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'                                                                                                                                                        
wavIO.cpp:(.text+0x87): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'                                                                                                                                                        
wavIO.cpp:(.text+0x94): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'                                                                                                                                                        
wavIO.cpp:(.text+0xaa): undefined reference to `operator new[](unsigned long)'                                                                                                     
wavIO.cpp:(.text+0xc7): undefined reference to `operator new(unsigned long)'                                                                                                       
wavIO.cpp:(.text+0x120): undefined reference to `operator delete(void*)'                                                                                                           
wavIO.cpp:(.text+0x129): undefined reference to `operator delete(void*)'                                                                                                           
wavIO.cpp:(.text+0x14e): undefined reference to `operator delete(void*)'                                                                                                           
wavIO.cpp:(.text+0x170): undefined reference to `operator delete(void*)'                                                                                                           
/tmp/cclKyqgc.o: In function `WavFileForIO::setPath(char*)':                                                                                                                       
wavIO.cpp:(.text._ZN12WavFileForIO7setPathEPc[WavFileForIO::setPath(char*)]+0x16): undefined reference to `operator new[](unsigned long)'                                          
/tmp/cclKyqgc.o: In function `WavFileForIO::~WavFileForIO()':                                                                                                                      
wavIO.cpp:(.text._ZN12WavFileForIOD1Ev[WavFileForIO::~WavFileForIO()]+0x14): undefined reference to `operator delete(void*)'                                                       
/tmp/cclKyqgc.o: In function `WavFileForIO::read()':                                                                                                                               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x38): undefined reference to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(char const*, std::_Ios_Openmode)'                                                                                                                                                                   
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x4e): undefined reference to `std::basic_istream<char, std::char_traits<char> >::seekg(long, std::_Ios_Seekdir)'  
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x6d): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x83): undefined reference to `std::basic_istream<char, std::char_traits<char> >::seekg(long, std::_Ios_Seekdir)'  
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0xa2): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0xc1): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0xe0): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0xff): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x11e): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'              
/tmp/cclKyqgc.o:wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x13d): more undefined references to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)' follow                                                                                                                                                                    
/tmp/cclKyqgc.o: In function `WavFileForIO::read()':                                                                                                                               
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x172): undefined reference to `std::basic_istream<char, std::char_traits<char> >::seekg(long, std::_Ios_Seekdir)' 
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x191): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'              
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x1a3): undefined reference to `operator new[](unsigned long)'
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x1c7): undefined reference to `std::basic_istream<char, std::char_traits<char> >::seekg(long, std::_Ios_Seekdir)'
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x1eb): undefined reference to `std::basic_istream<char, std::char_traits<char> >::read(char*, long)'
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x1f7): undefined reference to `std::basic_ifstream<char, std::char_traits<char> >::close()'
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x208): undefined reference to `std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream()'
wavIO.cpp:(.text._ZN12WavFileForIO4readEv[WavFileForIO::read()]+0x233): undefined reference to `std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream()'
/tmp/cclKyqgc.o: In function `WavFileForIO::WavFileForIO(char*)':
wavIO.cpp:(.text._ZN12WavFileForIOC1EPc[WavFileForIO::WavFileForIO(char*)]+0x16): undefined reference to `operator new[](unsigned long)'
/tmp/cclKyqgc.o: In function `WavFileForIO::getSummary()':
wavIO.cpp:(.text._ZN12WavFileForIO10getSummaryEv[WavFileForIO::getSummary()]+0x12): undefined reference to `operator new[](unsigned long)'
/tmp/cclKyqgc.o: In function `WavFileForIO::save()':
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x38): undefined reference to `std::basic_fstream<char, std::char_traits<char> >::basic_fstream(char const*, std::_Ios_Openmode)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x52): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::seekp(long, std::_Ios_Seekdir)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x6c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x8f): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0xa9): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0xc3): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0xe6): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)'
/tmp/cclKyqgc.o:wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x109): more undefined references to `std::basic_ostream<char, std::char_traits<char> >::write(char const*, long)' follow
/tmp/cclKyqgc.o: In function `WavFileForIO::save()':
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x22e): undefined reference to `std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()'
wavIO.cpp:(.text._ZN12WavFileForIO4saveEv[WavFileForIO::save()]+0x259): undefined reference to `std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()'
/tmp/cclKyqgc.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

PM MAIL   Вверх
niXman
Дата 26.11.2009, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: 1
Всего: 0



Код-то компилится, но не линкуется.
Попробуй так:
Код

g++ wavIO.cpp 

--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Proger10
Дата 26.11.2009, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Тьфу блин. Точно. smile

Добавлено через 6 минут и 27 секунд
Единственная трабла в этой проге (для тех кто юзать будет этот исходник), почему-то на последних двух строках:
delete path;
delete myWav;
прога вылетает smile
Код

*** glibc detected *** ./a.out: free(): invalid pointer: 0x000000000040173f ***
======= Backtrace: =========                                                   
/lib/libc.so.6[0x7f5373916488]                                                 
/lib/libc.so.6(cfree+0x6c)[0x7f537391af1c]                                     
./a.out[0x400fb8]                                                              
./a.out[0x400f3e]                                                              
/lib/libc.so.6(__libc_start_main+0xe6)[0x7f53738c0a26]                         
./a.out[0x400d19]                                                              
======= Memory map: ========      

не знаю почему.. перед ней строка "delete summary; " - срабатывает отлично, а эти две не срабатывают. Но если закомментировать, то всё отлично работает. Надеюсь те две строки не существенная потеря smile память ведь освободится самостоятельно после завершения работы проги?
PM MAIL   Вверх
MAKCim
Дата 26.11.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Proger10
все бы ничего, но

Цитата(Proger10 @  26.11.2009,  04:10 Найти цитируемый пост)
Надеюсь те две строки не существенная потеря smile память ведь освободится самостоятельно после завершения работы проги? 

это плохо пахнет ;)

у вас тут не memory leak, а тупо корявая программа
первое, что сразу видно
Код

 char *path = new char[50];
    //strcpy(path, argv[1]);
    path = argv[1];

а потом вы path удаляете через delete


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
nerezus
Дата 26.11.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

у вас тут не memory leak, а тупо корявая программа
 Имхо тут И то, И другое ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Proger10
Дата 26.11.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



А как правильно сделать? Надо было через strcpy?
PM MAIL   Вверх
MAKCim
Дата 26.11.2009, 16:14 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Proger10 @  26.11.2009,  16:09 Найти цитируемый пост)
А как правильно сделать?

Код

std::string path(argv[1]);



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Proger10
Дата 27.11.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Цитата(MAKCim @ 26.11.2009,  16:14)
Цитата(Proger10 @  26.11.2009,  16:09 Найти цитируемый пост)
А как правильно сделать?

Код

std::string path(argv[1]);

А чего, такой фокус не пройдёт?
Код

#include <iostream>
#include <fstream>

using namespace std;

int main () {

    string str = "test.txt";

    ifstream infile;
    infile.open ( str );

    if ( infile.is_open() ) {
        while ( infile.good() )
            cout << (char) infile.get();
        infile.close();
    } else {
        cout << "Error opening file";
    }
    return 0;
}


Получаю такие ошибки:
Код

ifstream.cpp: In function 'int main()':
ifstream.cpp:11: error: no matching function for call to 'std::basic_ifstream<char, std::char_traits<char> >::open(std::string&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.3/include/g++-v4/fstream:495: note: candidates are: void std::basic_ifstream<_CharT, _Traits>::open(const 
char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]


А в таких случаях как поступают обычно? smile

Это сообщение отредактировал(а) Proger10 - 27.11.2009, 22:58
PM MAIL   Вверх
Proger10
Дата 28.11.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Опаньки. Понял в чём фишка. Меняем:
Код

infile.open ( str.c_str() );

И всё отлично работает!

Добавлено через 7 минут и 15 секунд
Ещё пара вопросов..

1. Если я в функцию хочу передать ссылку на объект типа std::string мне не нужно употреблять символ "*"?
Т.е.:
bool func( string str );
или же так? 
bool func( string* str );

Походу первый вариант правильный? Потому что string это объект, а объект уже является сам по себе ссылкой, поэтому нет необходимости указывать ссылку.. Но так в яве, а в с++ не уверен smile

2. Нужно ли очищать как-то очищать память после std::string str("asdf") ? Или сама очистится?
PM MAIL   Вверх
andrew_121
Дата 28.11.2009, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 3
Всего: 33



Код

bool func( const string& str );



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
comcon1
Дата 3.12.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Цитата(Proger10 @  28.11.2009,  00:18 Найти цитируемый пост)
Походу первый вариант правильный? Потому что string это объект, а объект уже является сам по себе ссылкой, поэтому нет необходимости указывать ссылку.. Но так в яве, а в с++ не уверен 


И правильно не уверен. В java если ты пишешь:

Код

public void get(String arg) { // lalal }
//....
s = new String("sfe");
cl.get(s);


..., то //lala работает со ссылкой на s.

В С++ в таком же коде, во время входа в функцию запустится конструктор копирования (сам по себе):
Код

arg = new String(s);




--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.