2015-03-17 5 views
-2
class mystring 
{ 

public: 

    mystring(const char x[]) 
     : capacity(1024) 
    { 
     for (int i = 0; i < capacity; ++i) 
     { 
      if (x[i] == '\0') break; 
      s[i] = x[i]; 
      length++; 
     } 
    } 
    mystring() 
     : capacity(1024), s('\0'), length(0) 
    {} 
//etc... 

private: 

    const int capacity; 
    char s[1024]; 
    int length; 
}; 

Я получаю эту ошибку:класс туЗЬптд новый программист

In file included from main.cpp:19:0: 
mystring.h: In constructor ‘mystring::mystring()’: 
mystring.h:21:44: error: incompatible types in assignment of ‘char’ to ‘char [1024]’ 
     : capacity(1024), s('\0'), length(0) 

Я не под стендом, что происходит. Я немного новичок в конструкторах. Заранее спасибо!

+1

На самом деле не имеет значения, что ошибка находится внутри конструктора. В нем четко сказано, что вы не можете назначить 'char'' char [1024] '. –

+0

В первом конструкторе вы обрабатываете 's' как массив,' s [i] '. Во втором конструкторе вы обрабатываете 's' как переменную' char', 's ('\ 0')'. Это не может быть и то, и другое. –

+0

Да, я полный новичок. Большое спасибо ребятам. Я просто не замечал очевидного. – aglasscage

ответ

1

Изменение s('\0') к s("\0")

Когда вы используете одиночные кавычки, это один символ. Вы должны использовать двойные кавычки, чтобы проверить его как строку.

+0

Или просто 's (" ")'. – emlai

0

Ошибка, которую вы получаете прямо сейчас, потому что вы пытаетесь поставить char в char[].

char[] - это массив символов char и char, который является всего лишь символом; регулярно, char[] определяется как char str[] = "Test";

Подумайте об этом и попытайтесь исправить свой код! Надеюсь, что это помогает

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