草庐IT

外部化

全部标签

c++ - 不明确的引用和命名空间(来自两个外部库的定义冲突)

我经历了我无法理解的定义的崩溃。问题的示意图如下:主项目文件有两个包含:includeinclude第一个header包括库中的其他几个header,其中一个header有一个直接的(未覆盖namespace)定义:templateclassSparseMatrix;lib2.h里面有如下内容namespacelib2{usingnamespacelib3;class...{...SparseMatrix......}}在lib3里面,覆盖着命名空间,还有一个SparseMatrix类的定义。每个库单独编译没有问题。当我尝试编译使用的可执行文件时,编译器产生错误:lib2.h:70:7

C++ 外部 : pointer vs. 引用

我有三个类:ConsoleInputStream、ConsoleOutputStream、ConsoleErrorStream。它们都是从Stream派生的。每个流都有虚函数read和write;如您所料,当用户尝试使用ConsoleInputStream的write成员函数时,它会抛出一个错误。当用户尝试使用ConsoleOutputStream的write函数时,也会发生同样的情况。现在是显示代码的时候了。//STREAM.HPPnamespacestreamlib{externConsoleInputStreamstdin_default;externConsoleOutputS

c++ - 为什么需要在初始化时指定外部/静态变量的类型?

我不明白在初始化时需要指定外部/静态变量的类型。例如:structTest{staticinti;};Test::i=2;//errorintTest::i=2;//ok难道编译器不知道我是int类型的吗?这只是编译器的特殊性,还是为什么需要类型int的规范? 最佳答案 Idonotunderstandtheneedtospecifythetypeofanextern/staticvariableatinitialization.因为语言设计者选择对变量声明和定义使用相同的语法。该语法包括类型名称。您是对的,在某些情况下,该类型名称

c++ - 为什么C++允许从外部修改一个常量对象的指针成员变量的内存?

当我在C++中编写一个带有常量参数和该对象内部的指针变量的函数时,我一直在努力理解,而不是const标志不保护底层内存免受修改。例如,在名为X的类的operator=()函数中执行以下操作是完全合法的:classX{public:X&operator=(constX&other){this->data=other.data;//(*)return*this;}private:int*data;};(*):这与以下相同:int*some_pointer;int*constother_pointer=some_pointer;int*class_pointer=other_pointer;

c++ - 外部模板 'inconsistent explicit instantiations'

给定#include//CaseI:errorerrorC2961:'std::vector>':inconsistentexplicitinstantiations,apreviousexplicitinstantiationdidnotspecify'externtemplate'templateclassstd::vector;externtemplateclassstd::vector;//CaseII:fine//externtemplateclassstd::vector;//templateclassstd::vector;//CaseIII:fine//externte

c++ - 未解析的外部符号

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?我正在努力将大量.h和.lib文件从nativeC++包装到托管C++,以便最终用作C#中的引用.dll。我已经链接了.lib文件,到目前为止一切都很顺利。包装最新的.h文件后,当2个函数返回链接错误时,我遇到了麻烦:errorLNK2019:unresolvedexternalsymbol__imp__htonl@4referencedinfunction"publi

javascript - 如果从 qresources 加载 html 文件,QWebView 不会加载任何外部资源

如标题中所述,我的问题是qwebview无法正确加载位于我的资源中的html文件。如果我从资源外部加载它作为普通本地文件,它会完美地加载它。但这对我来说不是一个选择。我想将该文件与应用程序捆绑在一起。编辑:顺便说一句,我说的是来自网络的外部资源。(例如http://host.org/somejavascript.js)感谢您的帮助 最佳答案 请看一下的第二个参数voidQWebView::setHtml(constQString&html,constQUrl&baseUrl=QUrl())根据documentation:Extern

c++ - 静态类变量是否与外部变量相同,仅具有类范围?

在我看来,静态类变量与外部变量相同,因为您只在staticintx/externintx中声明它语句,并实际在别处定义它(通常在.cpp文件中)静态类变量//.hfileclassFoo{staticintx;};//.cppfileintMyClass::x=0;外部变量://.hfileexterninty;//.cppfileinty=1;在这两种情况下,变量都在某处声明一次,并在一个文件中定义,该文件不会在编译中多次包含(否则链接器错误) 最佳答案 是的,两者都有静态存储时长和外部链接;它们具有基本相同的运行时属性,只是(编

c++ - 位于函数中的外部变量?

根据维基百科:http://en.wikipedia.org/wiki/External_variableAnexternalvariablemayalsobedeclaredinsideafunction.在函数中声明外部变量的目的是什么?它也必须是静态的吗? 最佳答案 它允许将对全局的访问限制在某些范围内:intmain(){externintx;x=42;//OKAY}voidfoo(){x=42;//ERROR}intx; 关于c++-位于函数中的外部变量?,我们在StackOv

c++ - 防止构造函数参数隐式转换为外部库类型

考虑以下代码:#include#includetypedefboost::iterator_range>int_range;templateclassRef{T*p_;public:Ref(T*p):p_(p){}/*possiblyotherimplicitconversionconstructors,butnounconstrainedtemplateconstructorsthatdon'tusetheexplicitkeyword...*/operatorT*()const{returnp_;}operatorconstT*()const{returnp_;}};structB