相关疑难解决方法(0)

如果没有头文件,如何定义静态成员?

如果没有头文件,如何定义静态成员?

代码:

class MyClass
{
};

int MyClass::staticMember;  // Error: class MyClass has no member staticMember!
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

c++ static

0
推荐指数
1
解决办法
161
查看次数

如何在C++中复制动态数组的值

我声明一个动态数组int *idArray;,我想将值复制到a tempArray,然后我将更改顺序tempArray,但我不想更改顺序idArray,我怎么能写它?我试图实现它,但是当顺序tempArray改变时,顺序idArray也会改变.

int *idArray = new int[size]; 
int *tempArray = idArray;
int m, n;
for(int k = 0; k < size; k++) {
    m = rand() % size;
    n = tempArray[m];
    tempArray[m] = tempArray[k];
    tempArray[k] = n; 
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays

0
推荐指数
1
解决办法
2852
查看次数

为什么不同文件中的类在没有标题的情况下找不到对方?

请查看以下代码

Main.cpp的

#include <iostream>

using namespace std;

int main()
{
    Class1 c;
}
Run Code Online (Sandbox Code Playgroud)

Class1.cpp

#include <iostream>

using namespace std;

class Class1
{
public:
    void click1()
    {
        cout << "Click 1" << endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

Class2.cpp

#include <iostream>

using namespace std;

class Class2
{
public:
    void click2()
    {
        cout << "Click 2" << endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

如果我将头文件添加到上面的类,它们可以工作.为什么C++在没有头文件的情况下不理解不同文件中的类?

c++ header-files visual-studio-2010

0
推荐指数
1
解决办法
296
查看次数

int是什么意思

由于指定的标准int a属于简单declaration.其实

simple-declaration:
    decl-specifier-seq_opt init-declarator-list_opt ; //
    attribute-specifier-seq decl-specifier-seq_opt init-declarator-list ;
type-specifier:
    trailing-type-specifier //
    class-specifier
    enum-specifier
trailing-type-specifier:
    simple-type-specifier //
    elaborated-type-specifier
    typename-specifier
    cv-qualifier
simple-type-specifier:
    nested-name-specifieropt type-name
    nested-name-specifier template simple-template-id
    char
    char16_t
    char32_t
    wchar_t
    bool
    short
    int //
    long
    signed
    unsigned
    float
    double
    void
    auto
    decltype-specifier
Run Code Online (Sandbox Code Playgroud)

因此int a是一个简单的声明.但是,如果我们重新声明a与以下相同的范围:

int a;
int a;
Run Code Online (Sandbox Code Playgroud)

我们有

test.cpp:4:5: error: redefinition of ‘int a’
test.cpp:3:5: error: ‘int a’ previously declared here
Run Code Online (Sandbox Code Playgroud)

到底究竟int a是什么?

c++ declaration definition

0
推荐指数
2
解决办法
363
查看次数

在自己的源文件中包含头文件?

说我有一些源代码MyAmoeba.cpp,带有相关的头文件MyAmoeba.h.在MyAmoeba.cpp中包含MyAmoeba.h是不错的做法?(我假设它从来没有必要,除了可能在一些设计糟糕的情况下,头文件包含一个宏来更改源文件)

据我所知,执行上述操作意味着如果您更改MyAmoeba.cpp中的任何内容的签名,但忘记在MyAmoeba.h中执行此操作,则错误将在编译阶段而不是在链接阶段发生,但我不确定这是好事/坏事/无关紧要的事情.

我对c ++ btw相当新,如果这个问题无论如何都是荒谬的(如果是这样的话,请指出我)

编辑:我正在玩一个只包含函数声明的头文件,但没有类/结构/等定义.从其他来源和下面的答案,在我看来,当头文件只有声明时,没有必要在相关的源文件中包含头文件,但如果头文件中有任何定义,那么它确实必要的(因为您可以根据需要多次声明,但只定义一次,并且显然可以使用定义代替声明,因此源文件中的函数定义将同时计为我的声明).

c++

0
推荐指数
1
解决办法
1108
查看次数

未初始化的变量/指针变成定义或声明?

假设我有以下程序:

int main(void)
{
int i; //Line 1
i=5;  //Line 2

int *j; //line 3
j=&i; //line 4
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试在Visual Studio中的第1行之后打印i,它会给出一个编译时错误,说明我使用的单元化变量.这是否意味着没有为i分配存储,而第1行只是一个声明?我理解第2行是一个定义.

还有,第3行和第4行呢?他们是宣言还是定义?

c declaration definition

0
推荐指数
1
解决办法
70
查看次数

为什么我不能在课堂上内联函数?

我正在通过编写公共数据结构来学习c ++,并且我有一个编译器警告我没有定义我的内联添加方法.

src/vector.h:10:14: warning: inline function 'Vector::add' is not defined
      [-Wundefined-inline]
        inline void add(const float val);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?据我所知,方法匹配.但是,如果我删除内联方法,它工作正常,但第一次调用add需要11380us,但第二次和第三次是3667us左右 - 大约4倍的罚款成本.

SRC/vector.h

//#include <cstddef>

class Vector {
public:
    explicit Vector(const int n);
    explicit Vector(const int n, const float val);
    float& operator[](const int i);
    inline int const length();
    inline void fill(const float val);
    inline void add(const float val);
    inline float sum();
private:
    float* arr;
    int len;
};
Run Code Online (Sandbox Code Playgroud)

src.vector.cpp

#include "vector.h"
#include <iostream>
#include <algorithm>
#include "yepCore.h"
#include "yepMath.h"
#include "yepLibrary.h"
#include <cstdlib>

using …
Run Code Online (Sandbox Code Playgroud)

c++ inline c++11

0
推荐指数
1
解决办法
228
查看次数

为什么C中的嵌套函数是针对C标准的

C标准(ANSI [C89],C99,C11)中不允许嵌套函数(块作用域中的函数声明).

但我无法在C标准中找到它.

编辑:

为什么函数定义不能在函数定义中(复合语句)?

c standards

0
推荐指数
1
解决办法
292
查看次数

变量/函数可以声明多次,但只能定义一次

变量/函数可以声明多次,但只能定义一次。这实际上是什么意思?

我试图了解有关在线编译器的声明,但我期望显示错误,但事实并非如此。

#include <stdio.h>
int x=10;

int main() {
    x=20;
    x=30;

    printf("%d",x);
}
Run Code Online (Sandbox Code Playgroud)

预期的输出:因为我已经定义了变量x并分配了三个不同的值10、20、30,所以我希望显示错误。这个概念说您可以声明变量多次,但只能定义一次,因为不能将两个不同的位置赋给同一变量实际输出:30

c variables declaration definition

0
推荐指数
1
解决办法
75
查看次数

静态变量概念“C”

在我阅读了静态变量之后,有些事情让我感到困惑。我们可以说关键字 static 的作用是将变量的生命周期延长到程序的生命周期,因为变量的生命周期就是它存在的时间段。

我的问题是:

  1. 里面到底发生了什么?
  2. 内存是专门为这个变量分配的,还是一种指针?

c

0
推荐指数
1
解决办法
157
查看次数