Использование скомпилированной ошибки нового оператора C2661: «CObject :: operator new»: ни одна перегруженная функция не принимает 4 аргумента (множественное наследование) - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть следующий класс в заголовочном файле

class CodeListSqlGenerator : public ICodeListSqlGenerator,public CDialog


{
    ........
public:
CodeListSqlGenerator(IIntelligentCodeListUpgraderParameter *i_intelligent_codelist_upgrader_parameter);
}

Когда я использую новый оператор в файле .cpp для создания объекта типа CodeListSqlGenerator

ICodeListSqlGenerator *CreateCodeListSqlGeneratorInterface(IIntelligentCodeListUpgraderParameter *i_intelligent_codelist_upgrader_parameter)
{
ICodeListSqlGenerator *i_codelist_sql_generator = new CodeListSqlGenerator(i_intelligent_codelist_upgrader_parameter);
return i_codelist_sql_generator;
}

Я получаю следующее при скомпилированной ошибке C2661: «CObject :: operator new»: ни одна перегруженная функция не принимает 4 аргумента Как мне исправить эту ошибку? Заранее спасибо -Атрея

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Макрос DEBUG_NEW должен быть изменен.проверьте, включен ли препроцессор #undef new, попробуйте написать #undef new перед новым ключевым словом

0 голосов
/ 14 апреля 2011

Похоже, вы пытаетесь создать объект ICodeListSqlGenerator с помощью конструктора CodeListSqlGenerator.Это невозможно сделать, так как ICodeListSqlGenerator уже имеет свой собственный конструктор.Однако объект CodeListSqlGenerator является ICodeListSqlGenerator, поэтому вы можете создать объект CodeListSqlGenerator и вернуть указатель на него в виде указателя ICodeListSqlGenerator.

...