gpt4 book ai didi

c++ - 编写头文件和源文件时的 VS2015 编译时错误

转载 作者:行者123 更新时间:2023-11-28 06:08:46 26 4
gpt4 key购买 nike

我对 VS2015 有疑问。当我编写头文件然后编写其源文件并将它们放入项目时,当我尝试编译它时会出现很多错误,但是如果我将所有内容都放在主文件中,它会完美运行。

我错过了什么吗?

我正在发布头文件和源文件。

谢谢!

标题.h:

    #pragma once

class Money
{
private:
int dollar;
long int cents;
public:
Money();
Money(int d, long int c);
int f_dollar() const { return dollar; }
int f_cents() const { return cents; }
Money round_cent(Money& m);
};

ostream& operator<<(ostream& os, const Money& m);
istream& operator>>(istream& is, Money& m);

标题.cpp:

#include "Header.h"
#include "std_lib_facilities.h"
#include "stdafx.h"

Money::Money()
:dollar{ 0 }, cents{ 0 } {};
Money::Money(int d, long int c)
:dollar{ d }, cents{ c } {};

Money Money::round_cent(Money& m)
{
int last_digit = m.cents % 10;
int diff = 10;
if (last_digit >= 5)
{
diff -= last_digit;
return Money(m.dollar, m.cents + diff);
}
if (last_digit < 5) return Money(m.dollar, m.cents - last_digit);
}

istream& operator>>(istream& is, Money& m)
{
int dollar;
long int cents;
cout << "Type dollars amount: $" << endl;
is >> dollar;
is.ignore(10, '.');
is >> cents;
if (!is) return is;

m = Money(dollar, cents);

return is;
}

ostream& operator<<(ostream& os, const Money& m)
{
return os << "We have " << m.f_dollar() << "." << m.f_cents()
<< " rounded." << endl;
}

金钱.cpp:

// Money.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "std_lib_facilities.h"
#include "Header.h"


int main()
{
Money m;
cin >> m;
m = m.round_cent(m);
cout << m;

return 0;
}

错误:

Severity    Code    Source  Description Project File    Line
Error C2146 Build syntax error: missing ';' before identifier 'round_cent' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 10
Error C2143 Build syntax error: missing ';' before '{' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 11
Error C2143 Build syntax error: missing ';' before '{' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 38
Error C2143 Build syntax error: missing ';' before '&' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C2143 Build syntax error: missing ';' before '&' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 37
Error C2059 Build syntax error: 'const' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 37
Error C4430 Build missing type specifier - int assumed. Note: C++ does not support default-int Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 6
Error C4430 Build missing type specifier - int assumed. Note: C++ does not support default-int Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 8
Error C4430 Build missing type specifier - int assumed. Note: C++ does not support default-int Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 10
Error C4430 Build missing type specifier - int assumed. Note: C++ does not support default-int Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C4430 Build missing type specifier - int assumed. Note: C++ does not support default-int Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 37
Error C2563 Build mismatch in formal parameter list Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C2447 Build '{': missing function header (old-style formal list?) Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 11
Error C2447 Build '{': missing function header (old-style formal list?) Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 38
Error C2065 Build 'os': undeclared identifier Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 37
Error C2473 Build 'operator >>': looks like a function definition, but there is no parameter list. Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C2365 Build 'Money': redefinition; previous definition was 'function' Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 10
Error C2653 Build 'Money': is not a class or namespace name Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 5
Error C2653 Build 'Money': is not a class or namespace name Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 7
Error C2653 Build 'Money': is not a class or namespace name Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 10
Warning C4508 Build 'Money': function should return a value; 'void' return type assumed Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 6
Warning C4508 Build 'Money': function should return a value; 'void' return type assumed Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 8
Error C2550 Build 'Money': constructor initializer lists are only allowed on constructor definitions Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 6
Error C2550 Build 'Money': constructor initializer lists are only allowed on constructor definitions Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 8
Error C2065 Build 'm': undeclared identifier Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C2065 Build 'is': undeclared identifier Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 22
Error C2448 Build '>>': function-style initializer appears to be a function definition Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 23
Warning C4627 Build '#include "std_lib_facilities.h"': skipped when looking for precompiled header use Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 2
Warning C4627 Build '#include "Header.h"': skipped when looking for precompiled header use Money c:\users\leonardo\documents\visual studio 2015\projects\money\money\header.cpp 1

似乎跳过了Header.h,但我不知道为什么。

谢谢。

最佳答案

如果您的项目配置为使用预编译 header (默认),则需要将 stdafx.h 文件作为项目中每个 .cpp 文件的第一个 #include 包含在内。

因此,要解决您的特定情况,请将 Header.cpp 文件中的 #include "stdafx.h"行移到顶部,或者将项目配置为不使用预编译 header 。

关于c++ - 编写头文件和源文件时的 VS2015 编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com