我有一个.h,其中包含类和两个.cpp,一个是主要的,另一个是持有函数。
我的编译器给了我这些错误
- Functions.cpp:在成员函数中,包括Flandre :: add()â:
- Functions.cpp:10:3:错误:未在此范围内声明âcinâ
- Functions.cpp:12:33:错误:Âstrlenâ未在此范围内声明
- Functions.cpp:16:6:错误:未在此范围内声明âcout?
- Functions.cpp:16:57:错误:未在此范围内声明âendlâ
- Functions.cpp:21:7:错误:未在此范围内声明âcout
- Functions.cpp:21:53:错误:未在此范围内声明âendlâ
- Functions.cpp:27:9:错误:为ISO提供的名称查找更改了ISO [-f
- Functions.cpp:27:9:注意:(如果你使用'fpermissiveâG++将接受你的代码)
- Functions.cpp:27:16:错误:âKYUU未在此范围内声明
- Functions.cpp:32:6:错误:未在此范围内声明âcout
- Functions.cpp:32:57:错误:ândlâ未在此范围内声明
- Functions.cpp:35:17:错误:在[[令牌]
之前预期的primary-expression- Functions.cpp:37:14:错误:在[â€
之前预期的unqualified-id- Functions.cpp:38:14:错误:在[â€
之前预期的unqualified-id- Functions.cpp:39:14:错误:在[ - 令牌
之前预期的非限定标识
我认为它与函数
中的#include标头有关Newprogram2.cpp
>#include <iostream>
#include <string>
#include "newprogram2.h"
Functions.cpp 有些部分缺失,但我只是想让它遵守,所以我可以先使用add()。
#include "newprogram2.h"
newprogram2.h
#ifndef NEWPROGRAM2_H
#define NEWPROGRAM2_H
#include<string>
using namespace std;
#endif
答案 0 :(得分:1)
您必须为要使用的功能添加正确的标题。
对于cin
,cout
和endl
您需要#include <iostream>
,您忘记在第二个.cpp文件中执行此操作
编译器无法将strlen
识别为函数,因为它不在<string>
中(请参阅http://www.cplusplus.com/reference/string/),而在<string.h>
中(请参阅http://www.cplusplus.com/reference/cstring/strlen/)
我建议您使用size()
或length()
,这些都在<string>
中,这两个都可以在std::string
个对象上调用。
Functions.cpp:27:16: error: âKYUUâ was not declared in this scope
此错误显示是因为您尝试访问在另一个.cpp文件中声明的变量。您尝试访问它的.cpp文件不知道此变量。您可以通过将变量移动到头文件中来解决此问题。
Functions.cpp:27:9: error: name lookup of âiâ changed for ISO âforâ scoping
可以通过更改此
来解决此问题for(i=0;i<=KYUU;i++)
到这个
for(int i=0;i<=KYUU;i++)
Functions.cpp:35:17: error: expected primary-expression before â[â token
Functions.cpp:37:14: error: expected unqualified-id before â[â token
Functions.cpp:38:14: error: expected unqualified-id before â[â token
Functions.cpp:39:14: error: expected unqualified-id before â[â token
这些错误显示是因为您尝试直接在类上调用函数而不是从该类实例化的对象,如Flandre[i].getid()
。你不能这样做,而是改造对象并调用对象上的函数。