C++ ffs没有在C++;
当我试图编译以下内容时,出现编译错误。。。。。请评论 这是我的密码: ffs.h tester.cppC++ ffs没有在C++;,c++,types,C++,Types,当我试图编译以下内容时,出现编译错误。。。。。请评论 这是我的密码: ffs.h tester.cpp #include "tester.h" int main() { tester runner; runner.run(); return 0; } 错误: g++ -c -Wall tester.cpp tester.h:7: error: ffs does not name a type tester.h: In member function void t
#include "tester.h"
int main()
{
tester runner;
runner.run();
return 0;
}
错误:
g++ -c -Wall tester.cpp
tester.h:7: error: ffs does not name a type
tester.h: In member function void tester::run():
tester.h:9: error: ffsobj was not declared in this scope
tester.h:9: error: expected `;' before ˜} token
make: *** [tester.o] Error 1
生成文件:
CFLAGS=-c -Wall
CC=g++
all: flags.o InputParser.o commands.o Filesystem.o ffs.o tester.o
$(CC) flags.o InputParser.o commands.o Filesystem.o ffs.o tester.o -o runner.o
flags.o : flags.cpp flags.h
$(CC) $(CFLAGS) flags.cpp
InputParser.o : InputParser.cpp InputParser.h
$(CC) $(CFLAGS) InputParser.cpp
ffs.o: ffs.cpp ffs.h
$(CC) $(CFLAGS) ffs.cpp
commands.o: commands.cpp commands.h
$(CC) $(CFLAGS) commands.cpp
Filesystem.o: Filesystem.cpp Filesystem.h Superblock.h
$(CC) $(CFLAGS) Filesystem.cpp
tester.o: tester.cpp tester.h ffs.o
$(CC) $(CFLAGS) tester.cpp
#fileUtility.o : IFileUtility.h
# gcc -c IFileUtility.h
# Inode.h commands.h Filesystem.h
clean :
rm *.o
不要解决“不命名类型”的问题,但请看这一行:
void run(){ffsobj.acceptCommands()};
正确答案是:
void run(){ffsobj.acceptCommands();}
在ffs.h
文件中有一个#endif
,没有befining#if
如果在
tester.h
文件中包含ffs.h
,为什么要声明class-ffs代码>?错误在以下行中:
class ffs;
class tester{
private:
ffs ffsobj; // <--- can't declare object for ffs; can be pointer/reference only
ffs类;
类测试员{
私人:
FFS FFSBOR;//< P>删除前类声明<代码>类FFS;<代码> >测试者.h。这是不必要的,因为你包括FFS.H,然后当编译器试图定义一个它认为没有定义的类成员时混淆编译器。 < P>你不能使用<代码> FFS>代码>作为你的类名,它已经在C++中有意义了。(这是一个模糊的名称)。请选择一个不同的名称。对不起,这是胡说八道。如果它在“tester.h”中,如果在“tester.h”中,它将在“tester.cpp”中因为他在tester中使用ffs对象。h他不能使用转发声明,所以删除转发声明,如果你已经包含了标题,也没有必要。只是忘了在这里发布。这很有趣。我在你发布的代码中没有看到任何会导致该错误的东西。it.com在vs中的windows中使用PLIE,但当我尝试使用makefile构建它时,问题显然存在于您的makefile中。遗憾的是,我对它们几乎一无所知。:|请尝试放置一些错误标志…至少-Wall…@mac在错误消息中没有做任何更改。Rong,他包含了完全定义了ffs
的标题,因此所有内容都是f当编译ffs.h
时,他可能不可见,因为他可能没有包含编译的路径。哇。谷歌搜索c++ffs
将这个问题排在第8位……所以它是一个stdlib函数。很不幸,包含了这个头并像它一样命名你的类。@Shishya:这就是名称空间的用途。
void run(){ffsobj.acceptCommands()};
void run(){ffsobj.acceptCommands();}
class ffs;
class tester{
private:
ffs ffsobj; // <--- can't declare object for ffs; can be pointer/reference only