【问题标题】:Why does this C++ Class code break the compiler?为什么这个 C++ 类代码会破坏编译器?
【发布时间】:2021-08-15 16:49:45
【问题描述】:

我正在为我的大学做一个项目,这是我使用 C++ 制作的一门课程。拥有此类完全破坏了 Visual Studio 编译器。不包括这个类将完美地运行程序。这是我第一次使用 c++ 类,我对 Java OOP 编程非常熟悉,但这对我来说没有意义。


#include <vector>
#include <string>

using std::string;
using std::vector;

namespace Studentas {

    class Studentas {
    private:
        string vardas_, pavarde_;
        float mediana_, vidurkis_, egzaminas_;
        vector<int> pazymiai_;

    public:
        inline string vardas() const { return vardas_; }
        inline string pavarde() {
            return pavarde_;
        }
        inline float mediana() {
            return mediana_;
        }
        inline float vidurkis() {
            return vidurkis_;
        }
        inline float egzaminas() {
            return egzaminas_;
        }
        inline vector<int> pazymiai() {
            return pazymiai_;
        }

        inline void pakeistiVarda(string _vardas) {
            this->vardas_ = _vardas;
        }

        inline void pakeistiPavarde(string _pvd) {
            this->pavarde_ = _pvd;
        }
        inline void pakeistiEgzamina(float _egz) {
            this->egzaminas_ = _egz;
        }
        inline void pakeistiMediana(float _med) {
            this->mediana_ = _med;
        }
        inline void pakeistiVidurki(float _vid) {
            this->vidurkis_ = _vid;
        }

        float skaiciuotiMediana();
    };

}

这些是我得到的错误,我认为它们中的任何一个都不相关,因为有 13 个错误来自编译器。

立即出现大量错误,几乎就像编译器不喜欢某些东西一样。但在视觉上没有任何错误标记。

【问题讨论】:

  • 请将您的代码/错误发布为文本,而不是图像。对于由于某种原因看不到图像的人,您的问题是无法回答的。
  • 您发布的代码很好(如果有点笨拙,那些inline 是隐含的,那些前缀下划线给了我eeby-jeebies)。问题可能与您的项目和/或系统有关。
  • 抱歉,我修复了图像。我会尝试重新安装 c++ 编译器,因为我不知道问题是什么。这是唯一导致此类问题的类,很少有其他类不会导致任何编译问题。 NVM:我实际上尝试使用 Replit.com,它也在那里给出错误,因为这些错误是不可读的,我无法弄清楚。
  • @JonathanGrand 在您重新安装软件之前,错误也可能来自includes 此代码的文件。位于标头中的 ok 代码中的许多错误通常是其他地方缺少右括号的标志。
  • 你的代码没有编译错误,编译正常。

标签: c++ visual-studio compiler-errors


【解决方案1】:

您的代码没有问题,它对我来说很好。检查this。尝试转到属性 -> 链接器 -> 调试 -> 生成调试信息 生成针对共享和发布优化的调试信息。

【讨论】:

    【解决方案2】:

    您在调试之前构建您的项目吗?

    如果是这样,您可以转到项目属性->链接器->调试,然后将生成调试信息设置为Generate Debug Information (/DEBUG)Generate Debug Information optimized for sharing and publishing (/DEBUG:FULL)

    更多细节我建议你可以参考Doc:/DEBUG (Generate Debug Info)

    当您指定 /DEBUG 且没有其他选项时,对于命令行和 makefile 构建、Visual Studio IDE 中的发布构建以及 Visual Studio 2015 和更早版本中的调试和发布构建,链接器默认为 /DEBUG:FULL版本。从 Visual Studio 2017 开始,当您为调试生成指定 /DEBUG 选项时,IDE 中的生成系统默认为 /DEBUG:FASTLINK。其他默认值不变以保持向后兼容性。

    如果你使用的是vs2107及以上,我建议你应该使用/ DEBUG: FULL

    【讨论】:

    • @Jonathan Grand 你有任何更新吗?如果您的案例已经解决,请帮忙标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。
    猜你喜欢
    • 2012-10-08
    • 2021-02-01
    • 2016-04-22
    • 2016-01-19
    • 2013-03-26
    • 1970-01-01
    • 2021-05-27
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多