2016-01-13 2 views
1

Это будет основной вопрос, но надеюсь, что кто-то может мне помочь ..Конструктор, принимающий указатель на угол

У меня есть такая функция;

void createInstance() 
{ 
    MyClass m_Class; 
    m_Class(25, "Roger")(32, "Pete")(56, "Haley")(89, "Tom"); 
} 

Сейчас в MyClass:

class MyClass 
{ 
    MyClass(); 
    MyClass(int, const char&); // Gets ERROR here... 
}; 

Я хочу написать конструктор в MyClass, которые могут принимать строку # 2 из CreateInstance функции.

Как я могу это сделать?

ответ

2

Обязательно: почему вы хотите это сделать и что вы хотите сделать? С точки зрения его компиляции вы должны понимать, что так, как написано, ваш объект уже построен. Вторая строка не является вызовом конструктора вообще, но вызывает оператор() на вашем объекте, который вы не определили. Вы хотите создать несколько объектов или хотите гибко передать несколько этих пар int, строк в структуру объекта post post? Если вы хотите сделать последний, вы можете сделать это:

class MyClass 
{ 
    MyClass(); 

    MyClass& operator()(int x, const char* str) { 
     // Do stuff with x and str 
     return *this; 
    } 
}; 

Что умна о том, что оператор() возвращает ссылку на сам объект, который, конечно, имеет оператор(), так что вы можете вызовите его снова, что снова возвращает ссылку на объект и т. д. Вот рабочий пример: http://coliru.stacked-crooked.com/a/a0873be09770afd2.

0

Как это:

MyClass (интермедиат, Const символ *);

+0

Дает ошибку - ошибка: нет соответствия для вызова в '(MyClass) (int, const char [4])' | –

+0

получение ошибки - ошибка: нет соответствия для вызова в '(MyClass) (int, const char [4])' –

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