C++ ffs没有在C++;

C++ 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

当我试图编译以下内容时,出现编译错误。。。。。请评论

这是我的密码: 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 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