2014-11-09 3 views
-1

все. Я пытаюсь написать связанный список объектов-указателей. При изменении OBJ в OBJ *, компилятор начал жаловаться на моем инициализаторе конструкторы, утверждая:Невозможно преобразовать из 'char' в 'myClass *'

a) Error C2078: too many initializers 

b) Error C2440: 'initializing' : cannot convert from 'char' to 'myClass *' 

Моих вызовов Initializer Конструкторы содержат одинаковое количество параметров, как определен в моем инициализаторе конструкторах. Я также не уверен, как интерпретировать b. Вот отрывок из моего кода:

myClass * obj('a', 0.0, 1, 1, 1, 1, "string", "string", "string"); 

Вот моя функция объявления:

myClass * obj(char *val1, double val2, int val3, int val4, long long val4, long long val5, string val6, string val7, string val8). 

Любые слова советы? Я даже не был уверен, какой код включить. Дайте мне знать, если я могу включить что-либо, чтобы сделать это более ясным. Благодаря!

P.S. Я новичок в публикации, поэтому я не мог правильно форматировать текст.

ответ

0

Это

myClass * obj(char *val1 

не будет принимать

'a' 

но с радостью принимает

"a" 

Примечание :: Вы не должны пытаться изменить содержание знач1 в этой функции.

Ошибки :: не удается преобразовать из «полукокса» к «MyClass *» означает

вы возвращаете полукокс из этой функции, в которой вы должны вернуть указатель на MyClass object.In этого случая также следует запретить себе возвращаться адрес локального объекта (объект, выделенный в стеке).

+0

потребует 'константного символа *' 'принимать«а»' счастливо (т.е. без использования устаревших переходов) – Mat

+0

Таким образом, вы хотели сказать [символ * ул = «ABCD»] не является правильным ... насколько вы не меняете содержание этого. – ravi

+0

Это действительно породит предупреждение. (clang: "warning: ISO C++ 11 не позволяет преобразовать из строкового литерала в 'char *'") – Mat

2

Вы не можете инициализировать указатель длинным списком аргументов.


Возможно, несущественная или ungood догадка, но вы имели в виду вызвать функцию с именем obj, которая возвращает указатель, и принимает указатель на изменяемые строки C в качестве первого аргумента?

В этом случае рассмотрите, например,

char s[] = "a"; 
myClass* p = obj(s, 0.0, 1, 1, 1, 1, "string", "string", "string"); 
Смежные вопросы