declaration相关内容
我在我的代码中使用了Vectors。 导致错误的行如下: vector alt_seq; alt_seq = vector(1000); for(int j = 0; j
..
我收到以下错误消息(有人随意编辑不必要的位): 1> FIXDecoder.obj:error LNK2001 :未解析的外部符号“private: static class std :: unordered_map,class std :: allocator>,class std :: basic_string,class std :: allocator>,struct std
..
编译 #include“Sprite.h” class GameObject { public: int x,y,w,h; Sprite sprite; public: GameObject()? GameObject(int _ x,int _y,int _w,int _h); virtual〜GameObject(); }; 这不
..
这是 http://stackoverflow.com/questions/的后续追踪2050900 / c-templates-prevent-instantiation-of-base-template 我使用模板实现函数重载而没有隐式类型转换: em>声明功能模板,定义所需的特殊化(重载)。一切都很好,除非错误的代码不产生错误,直到链接阶段: lib.hpp: templ
..
当我声明C ++变量,我这样做: int a,b,c,d; 或 string strA,strB,strC,strD; 即,首先是类型,然后是以逗号分隔的变量名称列表。 但是,我声明了这样的指针: int * a,* b,* c, * d; 并参考如下: int& a,& b,& c,& d;
..
下面的代码在VC ++ 6中编译。我不明白为什么我得到编译错误 C2079:'b'使用未定义的类'B'为以下代码。 B类来源 #include“Bh” void B :: SomeFunction() { } strong> B类标题 #include“Ah” struct A; class B { public: A a
..
my_test.h #ifndef MY_TEST #define MY_TEST struct obj { int x; int y; }; class A { private: const static int a = 100; const static obj b; }; const obj A :: b = {1,2}; #en
..
[basic.link] / 6 在块范围中声明的函数的名称和 的名称块范围 extern 声明的变量具有链接。 如果存在具有 相同名称和类型的链接的实体的可见声明,忽略在最内部的 外部命名空间范围之外声明的实体,块范围声明声明 同一个实体并接收先前声明的链接。如果 有多个这样的匹配实体,程序是 形式。否则,如果没有找到匹配实体,块范围 实体接收外部链接。[示例: s
..
为什么C ++设计为在同一行上声明两个int *的正确方法是 int * x ,* y; 不 int * x,y; 我知道一些人认为你应该避免任何形式和声明每个变量在自己的行, 解决方案 为了保持与C代码的兼容性,因为这是C的工作原理。 / p> Bjarne是一个好点这里: int * p; 和 i
..
我只是看通过google的非本地平均值算法的实现(感谢google代码搜索),并遇到这个功能镜像。 template :: mirror(const int src, const int size, const in
..
有没有办法在未命名类中声明构造函数或析构函数?请考虑以下 void f() { struct { // } inst1,inst2; // f实现 - 实例的使用 } 后续问题:实例被构造(并销毁)为任何基于堆栈的对象。什么叫?它是一个由编译器自动分配的名称吗? 解决方案 不能为未命名类声明构造函数或析构函数,因为构造函数和析构函数名称需要匹配类
..
当尝试为多个平台编译以下(简化)代码时,我发现它在某些方面失败,即IBM的xlC_r。进一步的调查发现,它也失败了来和ang。它用g ++和Solaris的CC编译成功。 这里是代码: int main() { int a1 [1]; bool a2 [1]; for(int * it = a1,* end = a1 + 1; it!= end; ++ it){ /
..
这段代码编译得很好: extern int i = 10; void test() { std :: cout
..
是否可以在c ++中声明一个变量而不实例化它?我想做这样的事情: if(happyDay()) a(“puppies”); // constructor call else a(“toads”); 基本上,我只想声明一个外部的条件,所以它获得正确的范围。 p> 有没有办法做到这一点,不使用指针和在堆上分配 a ? $ p 解决方案 你不能
..
有没有办法在if结构中声明,分配和比较一个变量到表达式,以便只在if结构的范围内定义? 这个工作(声明和赋值,当然条件只是函数f的返回值等于零): int main() { if(int i = f()) { printf(“%d”,i); // i在这里定义! } else { //这里! } //但不在这里! } 但是当我尝试比较
..
在C ++中,函数,变量和常量的声明和定义可以这样分隔: function someFunc function someFunc() { //实现。 } 事实上,在类的定义中,通常是这样。类通常使用它的成员在.h文件中声明,然后在相应的.C文件中定义它们。 这种方法的缺点? 解决方案 历史上这是帮助编译器。你必须在使用它们之前给它一个名字
..
我的理解是,在很长时间之后,是一个C ++翻译单元,在预处理器运行之后,是一个声明序列(让我提醒任何定义也是一个声明)。 许多人都在使用这个语句,但没有人曾经给过一个反例。但我自己发现这个例子困扰我: int x; // declaration ; // ??? EMPTY DECLARATION? int main()// dec {// la } // rat
..
我使用的库几乎完全由头文件中的模板化类和函数组成,如下所示: code> // foo.h template class Foo { Foo(){} void computeXYZ(){/ *重码* /} }; template void processFoo(const Foo& foo){/ * more heavy
..
以下程序是否根据c ++标准格式良好? 命名空间X {class A; } 命名空间Y {using X :: A; class A {}; } int main(){} 不同的编译器: gcc编译时没有错误。 visual c ++给出错误C2888: X :: A':符号不能在命名空间'Y'中定义 我在c ++标准中找不
..
我有一个模板类,我在一个头声明一个方法,没有该方法的头部中的定义。在.cc文件中,我定义了该方法的特殊化,而不必在标题中声明它们。 在不同的.cc文件中,我调用存在特殊化的不同模板参数的方法。它看起来像这样: foo.h: 类型名T> class Foo { public: static int bar(); }; foo.cc: #includ
..