【问题标题】:Use of new operator -compiled error C2661: 'CObject::operator new' : no overloaded function takes 4 arguments (Multiple Inheritance)使用新运算符 - 编译错误 C2661:'CObject::operator new':没有重载函数需要 4 个参数(多重继承)
【发布时间】:2011-04-13 12:19:14
【问题描述】:

我在头文件中有以下类

class CodeListSqlGenerator : public ICodeListSqlGenerator,public CDialog


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

当我在 .cpp 文件中使用 new 运算符创建 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 个参数时,我得到以下信息 我该如何纠正这个错误? 在此先感谢-Athreya

【问题讨论】:

标签: c++ mfc compiler-errors multiple-inheritance new-operator


【解决方案1】:

DEBUG_NEW 宏必须更改。检查您是否包含预处理器#undef new, 尝试在new关键字前写#undef new

【讨论】:

    【解决方案2】:

    您似乎正在尝试使用 CodeListSqlGenerator 构造函数创建一个 ICodeListSqlGenerator 对象。这无法完成,因为 ICodeListSqlGenerator 已经有自己的构造函数。但是,CodeListSqlGenerator 对象是 ICodeListSqlGenerator,因此您可以创建 CodeListSqlGenerator 对象并将指向它的指针作为 ICodeListSqlGenerator 指针返回。

    【讨论】:

    • 我没有尝试创建 ICodeListSqlGenerator 对象,ICodeListSqlGenerator *i_codelist_sql_generator = new CodeListSqlGenerator(i_intelligent_codelist_upgrader_parameter);创建 CodeListSqlGenerator 对象的引用
    • 嗯...你确实意识到它实际上创建了对象并返回一个指向新对象的指针,对吧?
    • 是的,对象引用仪式 ICodeListSqlGenerator 是一个接口,所以我无法创建它对象
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多