相关疑难解决方法(0)

头文件中的C++代码

我使用C++的个人风格总是把类声明放在一个包含文件中,并在.cpp文件中定义,非常类似于Loki对C++头文件,代码分离的回答.不可否认,我喜欢这种风格的部分原因可能与我花费编码Modula-2和Ada的所有年份有关,两者都有与规范文件和正文文件类似的方案.

我有一个同事,比我更了解C++,他坚持认为所有的C++声明应尽可能在头文件中包含定义.他并不是说这是一种有效的替代风格,甚至是一种稍微好一点的风格,而是这是每个人现在都用于C++的新普遍接受的风格.

我不像以前那样柔软,所以我并不急于拼抢他的这个潮流,直到我看到更多的人和他在一起.那个成语真的有多常见?

只是给出答案的一些结构:它现在是The Way,非常常见,有点普遍,不常见,还是出错?

c++ coding-style code-separation

183
推荐指数
11
解决办法
11万
查看次数

C++头文件如何包含实现?

好吧,无论如何不是C/C++专家,但我认为头文件的目的是声明函数,然后C/CPP文件来定义实现.

但是,今晚回顾一些C++代码,我发现这是在类的头文件中...

public:
    UInt32 GetNumberChannels() const { return _numberChannels; } // <-- Huh??

private:
    UInt32 _numberChannels;
Run Code Online (Sandbox Code Playgroud)

那么为什么标题中有实现呢?是否与const关键字有关?这是内联类方法吗?与定义CPP文件中的实现相比,这样做的好处/意义究竟是什么?

c++ header-files

59
推荐指数
4
解决办法
8万
查看次数

如何在多个 C++ 文件中使用 C header.h 而不会出现多个定义错误?

我想使用 Wireshark 开源项目中“func.h”文件中的函数。我需要在多个 .cpp 文件中使用 funct() 函数,但出现多重定义错误。

函数.h:

    #ifndef func_h
    #define func_h
    #include<string>
    
     void *funct(char *cName)
     {
         std::string name = cName;
         cName+= ".extension";
     }
Run Code Online (Sandbox Code Playgroud)

在 .cpp 文件中,我包含 func.h:

    #include "func.h"
Run Code Online (Sandbox Code Playgroud)

并从 2 个 .cpp 文件调用 funct() 函数:

    funct("program");
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能避免出现多重定义错误?解决方法是将函数定义复制并粘贴到每个 .cpp 文件中并更改函数名称,但这很丑陋。

非常感谢。

c++ compiler-errors header

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