2013-02-12 3 views
1

В C++ (Microsoft Visual Studio), у меня есть: main_savitch_4 :: строка :: строка (Const символ ул [] = "") в mystring.h и добавил в mystring.cpp:уравнение в объявлении функции

main_savitch_4::string::string(const char str[ ] = ""){ 
    allocated = 0; 
    current_length = 0; 
    start = new char[0]; 
}, which defines the private variables. 

я получаю следующие ошибки:

c:\users\erice\documents\c++_2\lab04\rice_lab04_2\rice_lab04_2\mystring.cpp(13): error C2572: 'main_savitch_4::string::string' : redefinition of default parameter : parameter 1 
1>   c:\users\erice\documents\c++_2\lab04\rice_lab04_2\rice_lab04_2\mystring.h(88) : see declaration of 'main_savitch_4::string::string' 
1>. 

Что именно происходит не так ??? Я не понимаю, что = означает в описании функции

ответ

5

Компилятор сообщает вам, что у вас есть параметр по умолчанию в объявлении и определении функции. Удалите его из определения:

main_savitch_4::string::string(const char str[ ]) { ... } 

I don't understand what = means in a function description

Это означает, что вы предоставляете параметр derfault к функции. Например,

void foo(int i = 42); // declaration 

выше означает, что вы можете вызвать foo без параметра:

.... 
void foo(int i) { return i+100; } // definition 

// call the function 
foo(); // calls it as foo(42); 
foo(123); 
+0

Когда я изменить его на: main_savitch_4 :: строка :: строки (символ * запуска = "") { \t = 0; \t current_length = 1; \t начало = новый символ [1]; } Я получаю следующую ошибку:> c: \ users \ erice \ documents \ C++ _ 2 \ lab04 \ rice_lab04_2 \ rice_lab04_2 \ mystring.cpp (13): ошибка C2572: 'main_savitch_4 :: string :: string': переопределение параметра по умолчанию: параметр 1 1> c: \ users \ erice \ documents \ C++ _ 2 \ lab04 \ rice_lab04_2 \ rice_lab04_2 \ mystring.h (88): см. объявление 'main_savitch_4 :: string :: string' 1> 1> Сборка НЕИСПРАВНО. Есть предположения? – user963070

+0

@ user963070 - та же ошибка. Вы устанавливаете параметр по умолчанию в определении функции, а также в ее декларации. Делайте это только в декларации. – juanchopanza

Смежные вопросы